tło
Prowadzę statyczną stronę na S3, z CloudFront na samej górze. Mam problem z moimi plikami HTML.
Zgodnie z FAQ CloudFront :
Amazon CloudFront używa tych nagłówków kontroli pamięci podręcznej, aby określić, jak często musi sprawdzać pochodzenie zaktualizowanej wersji tego pliku
Co zrobiłem do tej pory
Mając to na uwadze, ustawiłem pliki HTML w moim S3 Bucket, aby dodać następujące nagłówki:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Przy pierwszym połączeniu z moim samplefile.htm
widzę następujące nagłówki odpowiedzi (wykluczyłem oczywiste nagłówki (np. Content-Type
), Aby przejść do sedna:
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
Jak widać, mój Cache-Control
nagłówek jest tam. Problem polega na tym, że jeśli zaktualizuję ten plik i odświeżę, otrzymam buforowaną zawartość (a nie najnowszy plik) i widzę, że CloudFront obsługuje swoją buforowaną wersję, patrząc na nagłówki odpowiedzi:
X-Cache:Hit from cloudfront
Podsumowanie / pytanie
Mając powyższe na uwadze, jak mogę uzyskać automatyczne pobieranie najnowszego kodu HTML podczas korzystania z CloudFront?
Zgodnie z często zadawanymi pytaniami powinienem móc to zrobić za pomocą nagłówków Cache-Control, ale wydaje mi się, że to nie działa.
Po odpowiedziach poniżej
Ostatecznie zdecydowałem się zmienić moją stronę www CNAME, tak aby bezpośrednio wskazywała na mój segment S3. Następnie dodano nową CNAME o nazwie „static”, która wskazuje na CloudFront.
Oznacza to, że HTML jest bezpośrednio z S3, który następnie ma wszystkie swoje odwołania CSS / JS / IMG wskazujące na static.mydomain.com