Używam CloudFront firmy Amazon do obsługi plików statycznych moich aplikacji internetowych.
Czy nie ma sposobu, aby powiedzieć dystrybucji Cloudfront, że musi odświeżyć swój plik lub wskazać pojedynczy plik, który powinien zostać odświeżony?
Amazon zaleca wersjonowanie plików, takich jak logo_1.gif, logo_2.gif i tak dalej jako obejście tego problemu, ale wydaje się to dość głupim rozwiązaniem. Czy nie ma innego wyjścia?
amazon-web-services
cloud
cdn
amazon-cloudfront
Jaskółka oknówka
źródło
źródło
Odpowiedzi:
Dobre wieści. Amazon w końcu dodał funkcję unieważnienia. Zobacz dokumentację API .
Oto przykładowe żądanie z dokumentacji API:
źródło
createInvalidation
żądania API nadal widzę, że aktualizacja zajmuje około 5-10 minut, aby unieważnić. Zauważ, że piszę ten komentarz 4 lata po twoim.Od 19 marca Amazon zezwala teraz na TTL pamięci podręcznej Cloudfront na 0 sekund, więc (teoretycznie) nigdy nie powinieneś widzieć nieaktualnych obiektów. Jeśli więc masz swoje zasoby w S3, możesz po prostu przejść do AWS Web Panel => S3 => Edytuj właściwości => Metadane, a następnie ustawić wartość „Cache-Control” na „max-age = 0”.
To prosto z dokumentacji API :
źródło
Dzięki interfejsowi Invalidation API jest aktualizowany w ciągu kilku minut.
Sprawdź PHP Invalidator .
źródło
Automatyczna konfiguracja aktualizacji w 5 minut
W porzadku chlopaki. Na razie najlepszym możliwym sposobem wykonania automatycznej aktualizacji CloudFront (unieważnienia) jest utworzenie funkcji Lambda, która będzie uruchamiana za każdym razem, gdy jakikolwiek plik zostanie załadowany do wiadra S3 (nowy lub przepisany).
Nawet jeśli nigdy wcześniej nie korzystałeś z funkcji lambda, jest to naprawdę łatwe - postępuj zgodnie z moimi instrukcjami krok po kroku, a zajmie to tylko 5 minut:
Krok 1
Wejdź na https://console.aws.amazon.com/lambda/home i kliknij Utwórz funkcję lambda
Krok 2
Kliknij opcję Pusta funkcja (niestandardowa)
Krok 3
Kliknij puste (obrysowane) pole i wybierz S3 z combo
Krok 4
Wybierz swój Bucket (tak samo jak w przypadku dystrybucji CloudFront)
Krok 5
Ustaw Typ zdarzenia na „Utworzono obiekt (wszystkie)”
Krok 6
Ustaw prefiks i sufiks lub pozostaw je puste, jeśli nie wiesz, co to jest.
Krok 7
Zaznacz pole wyboru Włącz wyzwalacz i kliknij Dalej
Krok 8
Nazwij swoją funkcję (na przykład: YourBucketNameS3ToCloudFrontOnCreateAll )
Krok 9
Wybierz Python 2.7 (lub nowszy) jako Runtime
Krok 10
Wklej następujący kod zamiast domyślnego kodu Pythona:
Krok 11
Otwórz https://console.aws.amazon.com/cloudfront/home w nowej karcie przeglądarki i skopiuj swój identyfikator dystrybucji CloudFront do wykorzystania w następnym kroku.
Krok 12
Wróć do zakładki lambda i wklej swój identyfikator dystrybucji zamiast _YOUR_DISTRIBUTION_ID_ w kodzie Pythona. Zachowaj otaczające cytaty.
Krok 13
Ustaw obsługę : lambda_function.lambda_handler
Krok 14
Kliknij pole wyboru ról i wybierz opcję Utwórz rolę niestandardową . Otworzy się nowa karta w przeglądarce.
Krok 15
Kliknij wyświetl dokument zasad , kliknij edytuj , kliknij OK i zastąp definicję roli następującą (taką jaka jest):
Krok 16
Kliknij Zezwól . Spowoduje to powrót do lambda. Dokładnie sprawdź, czy nazwa roli, którą właśnie utworzyłeś, jest wybrana w polu kombinacji Istniejąca rola .
Krok 17
Ustaw pamięć (MB) na 128 i limit czasu na 5 sek.
Krok 18
Kliknij przycisk Dalej , a następnie kliknij opcję Utwórz funkcję
Krok 19
Możesz ruszać! Teraz za każdym razem, gdy prześlesz / ponownie załadujesz dowolny plik do S3, zostanie on oceniony we wszystkich lokalizacjach CloudFront Edge.
PS - Podczas testowania upewnij się, że Twoja przeglądarka ładuje obrazy z CloudFront, a nie z lokalnej pamięci podręcznej.
PSS - Należy pamiętać, że tylko pierwsze unieważnienie 1000 plików miesięcznie jest bezpłatne, a każde unieważnienie powyżej limitu kosztuje 0,005 USD. Mogą obowiązywać dodatkowe opłaty za funkcję Lambda, ale jest ona wyjątkowo tania.
źródło
Bucket Explorer ma interfejs użytkownika, który teraz czyni to całkiem prostym. Oto jak:
Kliknij prawym przyciskiem myszy swoje wiadro. Wybierz „Zarządzaj dystrybucjami”.
Kliknij prawym przyciskiem myszy swoją dystrybucję. Wybierz „Pobierz listę unieważnień Cloudfront”, a następnie wybierz „Utwórz”, aby utworzyć nową listę unieważnień. Wybierz pliki do unieważnienia i kliknij „Unieważnij”. Poczekaj 5-15 minut.
źródło
Jeśli masz zainstalowany boto (który jest nie tylko dla Pythona, ale także instaluje kilka przydatnych narzędzi wiersza poleceń), oferuje narzędzie wiersza poleceń o nazwie
cfadmin
lub `` administrator frontowy chmury '', które oferuje następujące funkcje:Unieważniasz rzeczy, biegając:
źródło
Po prostu wysyłam wiadomość, aby poinformować każdego odwiedzającego tę stronę (pierwszy wynik w `` Odświeżaniu plików w chmurze ''), że istnieje łatwy w użyciu + dostęp online unieważniacz dostępny na swook.net
Ten nowy umniejszacz to:
Pełne ujawnienie: zrobiłem to. Baw się dobrze!
źródło
bardzo prostym sposobem jest przechowywanie wersji FOLDERÓW.
Więc jeśli na przykład twoje pliki statyczne są setki, po prostu umieść je wszystkie w folderze o nazwie rok + wersjonowanie.
na przykład używam folderu o nazwie 2014_v1, w którym mam wszystkie moje pliki statyczne ...
Dlatego w moim kodzie HTML zawsze umieszczam odniesienie do folderu. (oczywiście mam PHP, w którym ustawiłem nazwę folderu.) Więc zmieniając w 1 pliku, zmienia się to we wszystkich moich plikach PHP ..
Jeśli chcę pełnego odświeżenia, po prostu zmieniam nazwę folderu na 2014_v2 na moje źródło i zmieniam wewnątrz php na 2014_v2
cały HTML automatycznie się zmienia i pyta o nową ścieżkę, pamięć podręczną MISS w chmurze i żąda jej do źródła.
Przykład: SOURCE.mydomain.com to moje źródło, cloudfront.mydomain.com to CNAME do dystrybucji cloudfront.
Więc PHP nazwał ten plik cloudfront.mydomain.com/2014_v1/javascript.js i kiedy chcę pełnego odświeżenia, po prostu zmieniam nazwę folderu na źródło na „2014_v2” i zmieniam dołączenie PHP, ustawiając folder na „2014_v2” .
W ten sposób nie ma opóźnienia w unieważnieniu i BEZ KOSZTÓW!
To mój pierwszy post w stackoverflow, mam nadzieję, że zrobiłem to dobrze!
źródło
Ustaw TTL = 1 godzinę i wymień
http://developer.amazonwebservices.com/connect/ann.jspa?annID=655
źródło
W rubinie, używając klejnotu mgły
nawet w przypadku unieważnienia przetwarzanie i odświeżanie unieważnienia na wszystkich serwerach Amazon Edge trwa 5–10 minut
źródło
aktualne unieważnienie obsługi AWS CLI w trybie podglądu. Uruchom raz w konsoli następujące czynności:
Wdrażam projekt sieci Web przy użyciu npm. Mam następujące skrypty w moim
package.json
:Mając powyższe skrypty na miejscu, możesz wdrożyć swoją witrynę za pomocą:
źródło
--paths /
na--paths /*
. mój też był taki jak twój i nie unieważnił dystrybucji ...Jeśli używasz AWS, prawdopodobnie używasz również jego oficjalnego narzędzia CLI (wcześniej czy później). AWS CLI w wersji 1.9.12 lub nowszej obsługuje unieważnianie listy nazw plików.
Pełne ujawnienie: zrobiłem to. Baw się dobrze!
źródło
Idź do CloudFront.
Kliknij swój identyfikator / dystrybucje.
Kliknij Unieważnienia.
Kliknij Utwórz unieważnienie.
W ogromnym przykładowym polu wpisz * i kliknij unieważnij
Gotowe
źródło