2016-04-10 13 views
1

Wie Keep Alive-Verbindung in AWS S3 oder CloudFront zu aktivieren? Ich habe Bilder in S3 hochgeladen und festgestellt, dass die URLs keine Verbindung aufrecht erhalten haben. Sie können nicht von der Client-Anwendung zwischengespeichert werden, obwohl ich jeder Bilddatei Cache-Control-Header hinzugefügt habe.Wie Keep Alive-Verbindung in AWS S3 oder CloudFront aktivieren?

Antwort

2

Von dem Tag Wiki für Keep-Alive-:

Ein Merkmal von HTTP, wo die gleichen Verbindung für mehr Anfragen verwendet wird, mit mehreren Ressourcen Herunterladen von Web-Seiten zu beschleunigen.

Ich bin mir keiner Beziehung bewusst, dass dies Verhalten zwischenspeichern muss. Normalerweise sehe ich Erwähnungen von Keep-Alive-Headern in Bezug auf Long-Polling, was keinen Sinn ergeben würde, auf S3 zu aktivieren.

Ich denke, Sie verknüpfen Keep-Alive-Header fälschlicherweise mit der Fähigkeit Ihres Browsers, statischen Inhalt zwischenzuspeichern. Die Cache-Control-Header sollten alles sein, was zum Zwischenspeichern von statischem Inhalt im Browser benötigt wird.

Verifizieren Sie, dass die Antwort von CloudFront die Cache-Steuerkopfzeilen enthält, die Sie für die S3-Objekte festgelegt haben? Möglicherweise müssen Sie den CloudFront-Cache ungültig machen, nachdem Sie die Header aktualisiert haben.

+1

Keep-Alive-Verbindungen sind die Norm - sie ermöglichen es dem Browser, die nächste Anforderung ohne den Overhead einer neuen TCP-Verbindung zu senden. CloudFront legt einen expliziten 'Connection: keep-alive'-Header fest; S3 fügt überhaupt keinen 'Connection:' Header hinzu, was [in HTTP/1.1 als gleichwertiges Verhalten betrachtet werden sollte] (http://stackoverflow.com/a/7927599/1695906) - keep-alive ist aktiviert, wenn 'Connection : close' wird nicht gesendet. OP kann die Tatsache beobachten, dass S3 den Header nicht zurückgibt und davon ausgeht, dass dies signifikant ist, obwohl dies tatsächlich nicht der Fall ist. Die Ursache für ein Browser-Caching-Problem liegt an anderer Stelle. –

+0

Hier ist eine der Bild-URLs: https://s3-ap-southeast-1.amazonaws.com/mysamplestest/ad516503a11cd5ca435acc9bb6523536.png Ich habe einen REST-Client verwendet, um auf diese URL zuzugreifen. Es gibt keine Verbindung: Keep-Alive-Header. Dies ist jedoch eine URL der BBC-Website, die auch in S3 gespeichert ist. http://ichef.bbci.co.uk/bbcle/images/width/live/p0/3h/c2/p03hc212.jpg/624. Sie können sehen, dass es Connection: Keep-Alive-Header bekam. – Des

+1

Wenn die URL keine Verbindung: Keep-Alive-Header, kann das Bild nicht zwischengespeichert werden. Ich schreibe eine iOS-App, die auf die Bilder in meinem S3-Bucket zugreift. Alle Bilddateien konnten nicht zwischengespeichert werden. Ich habe viel Zeit darauf verwendet, die Probleme zu finden. Schließlich erkannte ich, dass es sich um Connection handelt: Keep-Alive-Header. Ich wundere mich, wie man das S3 oder CloudFront konfiguriert, um es zu reparieren. Vielen Dank – Des

Verwandte Themen