Zmusić CloudFront do przesłania najnowszego pliku HTML z S3
tło
>
Hostuję witrynę statyczną na S3 z CloudFront na górze. Mam problem z moimi plikami HTML.
Zgodnie z
CloudFront FAQ
http://aws.amazon.com/cloudfro ... files
:
Amazon CloudFront używa tych nagłówków kontroli pamięci podręcznej, aby określić, jak często należy sprawdzać źródło zaktualizowanej wersji tego pliku.
Co ja zrobiłem do tej pory
>
Mając to na uwadze, zainstalował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
Podczas pierwszego połączenia z moim
samplefile.htmWidzę następujące nagłówki odpowiedzi (wykluczyłem oczywiste nagłówki (np.
Content-Type) aby być na bieżąco z tematem:
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ć, my
Cache-Controlkierując się tam. Problem polega na tym, że jeśli zaktualizuję ten plik i zaktualizuję, otrzymam zawartość z pamięci podręcznej (nie najnowszy plik) i widzę, że CloudFront obsługuje swoją buforowaną wersję, patrząc na nagłówki odpowiedzi:
X-Cache:Hit from cloudfront
CV/pytanie
>
Mając to na uwadze, jak mogę automatycznie uzyskać najnowszy HTML podczas korzystania z CloudFront?
Zgodnie z jego FAQ mogę to zrobić z nagłówkami Cache-Control, ale nie mogę tego uruchomić.
Po odpowiedziach poniżej
>
W końcu zdecydowałem się zmienić mój CNAME www, aby wskazywał bezpośrednio na mój wiadro S3. Następnie dodano nowy rekord CNAME o nazwie „static”, aby wskazywał na CloudFront.
Oznacza to, że HTML pochodzi bezpośrednio z S3, gdzie wszystkie linki CSS/JS/IMG wskazują na static.mydomain.com
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Możesz sprawdzić, czy użyć tych innych nagłówków do zarządzania pamięcią podręczną, pod względem tego, czy dają one wynik, którego szukasz - możesz potrzebować tylko max-age. Prawdopodobnie chcesz, aby Cloudfront sprawdził S3, aby sprawdzić, czy plik HTML się zmienił. Jeśli tak, Cloudfront może pobrać i zaewidencjonować nowy plik. W przeciwnym razie może obsługiwać klienta z istniejącej pamięci podręcznej (oszczędzając przepustowość S3 i obsługując klienta szybciej i bardziej lokalnie).
Zadaniem Cloudfront jest udostępnianie zawartości w pamięci podręcznej, tak, ale teraz obejmuje ona zawartość, która czasami się zmienia, ale może być przechowywana w pamięci podręcznej, jeśli nie uległa zmianie.
P.s. Ciągi zapytań działają teraz również z Cloudfront (kolejna nowa funkcja, jeśli skonfigurujesz „zachowanie” dla odpowiedniego źródła), jednak niektóre serwery proxy mogą nadal nie buforować żadnych plików z ciągami zapytań.
Amazon Developer Guide: Expiration
1
http://docs.amazonwebservices. ... .html
Anonimowy użytkownik
Potwierdzenie od:
Najlepszym podejściem do tego problemu jest zmiana nazw plików podczas odświeżania strony - zmusi to Cloudfront do pobrania nowej zawartości. Pamiętaj, że Cloudfront jest zwykle używany do plików multimedialnych (w tym obrazów) i style/javascript - a nie do html. Zasadniczo twój HTML będzie na S3, a twoje obrazy będą w Cloudfront - niezależnie od wprowadzonych zmian, możesz zmienić nazwę pliku w Cloudfront (np. File-v1.jpg, file-v2.jpg itp.) ... Innym typowym sposobem jest dołączenie ciągu zapytania z informacjami o wersji.
Pamiętaj również, że Cloudfront nie obsługuje treści skompresowanych przy użyciu gzip, co może skutkować wolniejszymi czasami odpowiedzi niż ze zwykłego serwera (chociaż w twoim przypadku S3 również nie identyfikuje przeglądarek obsługujących gzip).
Wreszcie, jeśli chcesz, możesz użyć odwołania, aby zmusić Cloudfront do porzucenia istniejącej kopii i pobrania nowej z oryginalnego serwera. Należy jednak pamiętać, że Cloudfront zapewnia tylko 1000 bezpłatnych anulowań miesięcznie, po czym koszt wynosi 0,005 USD za anulowanie.
Minimalny czas przechowywania zawartości przez Cloudfront to
1 godzina
http://aws.typepad.com/aws/201 ... .html
chociaż wartość domyślna to 24 godziny. Więc spróbuję ustawić max-age na co najmniej 3600. Weź również pod uwagę nagłówek s-maxage (ogólnie, tj. Zawartość proxy). Amazon poleca
to
http://www.mnot.net/cache_docs/
samouczek buforowania.
Było
ostatni problem
https://forums.aws.amazon.com/ ... 77954
z tym, naprawiono kilka dni temu
Anonimowy użytkownik
Potwierdzenie od:
Jedną z rzeczy, które możesz zrobić, aby zaktualizować obiekty, jest unieważnienie zawartości. Aby uzyskać więcej informacji, skorzystaj z poniższego łącza.
http://blog.cloudberrylab.com/ ... .html
http://blog.cloudberrylab.com/ ... .html