Używam Amazon S3 do obsługi zasobów statycznych dla mojej witryny. Chcę, aby przeglądarki przechowywały te zasoby w pamięci podręcznej tak długo, jak to możliwe. Jakie nagłówki metadanych należy dołączyć do zasobów
Cache-Control: max-age=???
http
caching
http-headers
cache-control
Casey Flynn
źródło
źródło
Odpowiedzi:
Ogólnie zaleca się jeden rok jako standardową wartość maksymalną. Zobacz RFC 2616 :
Chociaż dotyczy to starszego
expires
standardu, sensowne jest stosowanie gocache-control
również w przypadku braku jakichkolwiek wyraźnych wytycznych dotyczących norm. Jest tak długi, jak i tak generalnie potrzebujesz, a wybranie dowolnej dłuższej wartości może zepsuć niektórych klientów użytkownika. Więc:źródło
Zastanów się, czy nie przechowywać go „tak długo, jak to możliwe”, a zamiast tego zadowalać się tak długo, jak to jest rozsądne. Na przykład jest mało prawdopodobne, że będziesz musiał przechowywać go w pamięci podręcznej dłużej niż powiedzmy 10 lat ... mam rację?
Dokument RFC omawia max-age tutaj: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3
Eric Lawrence mówi, że przed IE9 Internet Explorer traktowałby jako przestarzały każdy zasób z Cache-Control: wartość max-age powyżej 2147483648 (2 ^ 31) sekund, około 68 lat ( http://blogs.msdn.com/b /ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx ).
Oczywiście inne programy użytkownika będą się różnić, więc ... spróbuj wybrać liczbę, która prawdopodobnie (a nie prawdopodobna!) Spowoduje przepełnienie. Maksymalny wiek większy niż 31536000 (jeden rok) nie ma większego sensu i nieoficjalnie jest to uważane za rozsądną wartość maksymalną.
źródło
Osoby, które stworzyły rekomendację dotyczącą maksymalnie 1-rocznego buforowania, nie przemyślały tego właściwie.
Po pierwsze, jeśli odwiedzający jest obsługiwany nieaktualny plik z pamięci podręcznej, dlaczego miałoby przynosić jakąkolwiek korzyść, gdyby nagle załadował nową wersję po 1 roku? Jeśli plik ma 1 rok TTL, z funkcjonalnego punktu widzenia, oznacza to oczywiście, że plik nie jest przeznaczony do zmiany w ogóle.
Po co więc potrzebować więcej niż 1 rok?
1) Dlaczego nie? Nie ma żadnego celu na serwerze, aby powiedzieć przeglądarce odwiedzających "hej, ten plik ma 1 rok, może warto sprawdzić, czy został zaktualizowany".
2) usługi CDN. Większość sieci dostarczania treści używa nagłówka pamięci podręcznej do decydowania o tym, jak długo plik ma być efektywnie obsługiwany z serwera granicznego. Jeśli masz 1 rok kontroli pamięci podręcznej dla plików, w pewnym momencie zacznie on ponownie żądać niezmienionych plików z serwera źródłowego, a pamięć podręczna krawędzi będzie musiała zostać całkowicie ponownie wypełniona, powodując wolniejsze ładowanie dla klienta i niepotrzebne wezwania do pochodzenia.
Jaki jest sens posiadania maksymalnie 1 roku? Jakie przeglądarki dławią się kwotą wyższą niż 31536000?
źródło