2012-05-16 10 views
57

Kilka tygodni temu Amazon ogłosił, że obniżona okres ważności Treść:Co jest przydatne w TTL 0 w CloudFront?

Amazon CloudFront Lowers Minimum Content Expiration Period

tyle, że rzeczywiście można ustawić teraz TTL w CloudFront 0. Więc moje pytanie brzmi, dlaczego to może być przydatne do mieć dystrybucję CloudFront z TTL ustawionym na 0. Dla mnie oznacza to brak buforowania w ogóle, więc każde żądanie, które trafia do CloudFront, kończy się trafieniem w pochodzenie.

Czego mi brakuje?

Odpowiedz

117

Ta nowa funkcja Amazon CloudFront jest rzeczywiście bardzo przydatne dla wielu przypadków użycia, ponieważ trafienia pochodzenie działa nieco inaczej niż to wygląda na pierwszy rzut oka i nie zawsze jest problemem, przeciwnie; chociaż ta funkcja została już wydana wcześniej, wszystko to łączy się z najnowszą wersją Amazon CloudFront - Support for Dynamic Content, np. na pytanie pod ręką:

Zmienna Time-To-Live (TTL) - W wielu przypadkach treść dynamiczna jest albo nie buforowalny lub buforowalny przez bardzo krótki okres czasu, może tylko kilka sekundy. W przeszłości minimalna wartość TTL CloudFront wynosiła 60 minut, ponieważ cała zawartość została uznana za statyczną. Nowa minimalna wartość TTL wynosi 0 sekund. Jeśli ustawisz wartość TTL dla określonego źródła na 0, CloudFront będzie nadal buforował zawartość z tego źródła. To wtedy uczynić żądanie GET z If-Modified-Since nagłówku, dając tym samym pochodzenia szansę sygnał, że CloudFront móc nadal stosować pamięci podręcznej o ile nie uległa zmianie na początku. [podkr]

Innymi słowy, za pomocą TTL 0 oznacza przede wszystkim, że delegaci CloudFront Urząd za kontrolę pamięci podręcznej do pochodzenia, czyli serwer pochodzenia decyduje, czy nie, a jeśli na jak długo CloudFront buforuje obiekty; Proszę pamiętać, szczególnie, że wniosek GET z If-Modified-Since header nie musi oznaczać, że sam obiekt jest pobierany z pochodzenia, raczej pochodzenia mogą (i powinny) zwróci HTTP status code 304 - Not Modified w stosownych przypadkach:

Wskazuje, że zasób nie został zmodyfikowany od ostatniego żądania. [...] Korzystanie oszczędza przepustowość i przetworzenie zarówno na serwerze i klienta, jak tylko dane nagłówkowe muszą być wysyłane i odbierane w stosunku do całości strony są ponownie przetwarzane przez serwer , następnie wysłany ponownie przy użyciu większej przepustowości serwera i klienta. [podkr]

See Mark Nottingham wspaniałe Caching Tutorial Szczegółowe informacje na temat mechaniki i korzyści z kontroli cache HTTP, naprawdę ważnego i skutecznego część architektury HTTP.

Zrozumienie, jak wszystkie te elementy współpracują ze sobą może być nieco trudne rzeczywiście, odpowiednio w tabeli w sekcji określające minimalny czas, który CloudFront Skrytki Objects do pobrania rozkładów ciągu Specifying How Long Objects Stay in a CloudFront Edge Cache (Object Expiration) próbuje podsumować efekty, gdy stosowane w kontekście CloudFront z lub bez TTL = 0 specjalnie.

+2

To fantastyczna odpowiedź. Rozumiem! – jatorre

+2

Dzięki Steffen! Absolutnie dokładna i dobrze napisana odpowiedź. AWS powinien umieścić to w swoim DOCS !!! ha! – asherrard

+1

Bardzo dobrze wyjaśnione. Poważnie. +10 dla prostoty i zastosowanych terminologii. –

3

Należy zauważyć, że Amazon nie mówi "TTL ma wartość 0", ale mówi "Minimum TTL wynosi 0". i to jest zupełnie inne. Powyższy opis jest bardzo pożądany, ale nie ma gwarancji, że Cloudfront faktycznie to robi.

W moich dotychczasowych doświadczeniach widzę buforowany obraz pozostający przez kilka minut na krawędzi, podczas gdy moje pochodzenie już się zmieniło.

Myślę więc, że powiedzenie "Minimum TTL to 0" jest prawdopodobnie bardziej podobne do "Amazon nie ma ścisłego zamiaru utrzymywania tego w pamięci podręcznej", a może "i często będzie pobierane".

W przypadku aplikacji takich jak CMS, w których użytkownik publikuje nową treść, myślę, że TTL-0 wciąż nie jest wystarczający. Nadal musisz wywoływać unieważnienia z CMS lub stosować różne ścieżki dla różnych numerów wersji.