Hintergrund
Ich hoste eine statische Site auf S3, wobei CloudFront über der Spitze steht. Ich habe ein Problem mit meinen HTML-Dateien.
Laut CloudFronts FAQ :
Amazon CloudFront verwendet diese Cachesteuerungsheader, um zu bestimmen, wie oft der Ursprung einer aktualisierten Version dieser Datei überprüft werden muss
Was ich bisher gemacht habe
Aus diesem Grund habe ich die HTML-Dateien in meinem S3-Bucket so eingestellt, dass sie die folgenden Header enthalten:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Bei meinem ersten Aufruf von my samplefile.htm
werden die folgenden Antwort-Header angezeigt (offensichtliche Header (z. B. Content-Type
) wurden ausgeschlossen , um auf den Punkt zu kommen:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
Wie Sie sehen können, ist mein Cache-Control
Header dort. Wenn ich diese Datei aktualisiere und aktualisiere, erhalte ich den zwischengespeicherten Inhalt (und nicht die neueste Datei) und kann anhand der Antwortheader feststellen, dass CloudFront die zwischengespeicherte Version bereitstellt:
X-Cache:Hit from cloudfront
Zusammenfassung / Frage
Wie kann ich vor dem Hintergrund des oben Gesagten bei Verwendung von CloudFront das automatische Abrufen des neuesten HTML-Codes erreichen?
Laut FAQ sollte es mir möglich sein, dies mit Cache-Control-Headern zu tun, aber ich scheine nicht in der Lage zu sein, dies zum Laufen zu bringen.
Befolgen Sie die Antworten unten
Am Ende entschied ich mich, meinen WWW-CNAME so zu ändern, dass er direkt auf meinen S3-Bucket verweist. Dann wurde ein neuer CNAME mit dem Namen "static" hinzugefügt, der auf CloudFront verweist.
Dies bedeutet, dass HTML direkt aus S3 stammt, dessen CSS / JS / IMG-Referenzen auf static.mydomain.com verweisen