Odpowiedzi:
Cache-Control
został wprowadzony w HTTP / 1.1 i oferuje więcej opcji niż Expires
. Można ich użyć do osiągnięcia tego samego, ale wartość danych dla Expires
jest datą HTTP, podczas gdy Cache-Control
maksymalny wiek pozwala określić względny czas, dzięki czemu można określić „X godzin po zażądaniu strony”.
Kontrola bufora HTML jest bardzo podobnym pytaniem i zawiera dobry link do samouczka buforowania, który powinien odpowiedzieć na większość twoich pytań (np. Http://www.mnot.net/cache_docs/#EXPIRES ). Podsumowując, Expires
zalecane jest w przypadku zasobów statycznych, takich jak obrazy, i Cache-Control
gdy potrzebujesz większej kontroli nad sposobem buforowania.
Jeśli korzystasz z sieci CDN (Cloud Delivery Network), zalecam użycie Cache-Control z maksymalnym czasem trwania w sekundach. Na przykład Kontrola pamięci podręcznej: maks. Wiek = 604800. Zapobiega to szczytom żądań do twojego serwera źródłowego: „Wygaśnięcie śr., 30 października 20xx 04:37:07 GMT” wszystkie przeglądarki będą Cię o to pytać jednocześnie.
cache-control
. Więc nie rozumiem, dlaczego byłyby szczytowe żądania przy użyciuExpires:
Zgodnie z tym artykułem Google Developers buforowanie HTTP :
Nagłówek kontroli pamięci podręcznej został zdefiniowany jako część specyfikacji HTTP / 1.1 i zastępuje poprzednie nagłówki (np. Wygasa) używane do definiowania zasad buforowania odpowiedzi. Wszystkie nowoczesne przeglądarki obsługują Cache-Control, dlatego to wszystko, czego potrzebujemy.
Kontrola pamięci podręcznej została zdefiniowana w HTTP / 1.1, informuje wszystkie mechanizmy buforowania od serwera do klienta, czy mogą buforować ten obiekt. Mierzy się ją w sekundach: Cache-Control: max-age=3600
.
Pole Expires
nagłówka podaje datę / godzinę, po której odpowiedź jest uważana za nieaktualną. Expires wartość jest HTTP data timestamp: Expires: Tue, 18 Jul 2017 16:07:23 GMT
.
Jeśli odpowiedź zawiera Cache-Control
pole z max-age
dyrektywą, odbiorca MUSI zignorować to Expires
pole.
Heroku devcenter ma doskonały artykuł na ten temat.
Cytując z tego
Podczas gdy nagłówek Cache-Control włącza buforowanie po stronie klienta i ustawia maksymalny wiek zasobu, nagłówek Expires służy do określania określonego momentu, w którym zasób nie jest już ważny.
Z wyjątkiem prywatnych / publicznych opcji CC, nie widzę żadnej różnicy. Gdy używasz wygasania, np. „Dostęp plus 1 rok / miesiąc / tydzień / dzień”, działa dokładnie tak samo jak CC.
Jeśli nadal jesteś zainteresowany, pozostawiam to zalecenie bezpośrednio od chłopców z Google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Wolą wygasać przed Cache-Control