Co się stanie, jeśli nie ustawisz nagłówka kontroli pamięci podręcznej?

14

Co się stanie, jeśli nie ustawisz cache-controlnagłówka? Czy HTTP określa domyślne zachowanie, które powinni stosować klienci, czy może to oni decydują?

W Chrome widziałem niektóre żądania Javascript, które nie mają cache-controlnagłówków jako 200 (from disk cache). Czy Chrome to optymalizuje?

W IE widziałem, jak pokazuje się jako 304 (not modified).

Jak mam to lepiej zrozumieć?

Nishant
źródło
1
„brak nagłówków pamięci podręcznej” oznacza brak nagłówka kontroli pamięci podręcznej, czy naprawdę brak nagłówków pamięci podręcznej? Kontrola pamięci podręcznej nie jest jedynym nagłówkiem wpływającym na buforowanie. Większość serwerów internetowych wyśle ​​nagłówki Last Modified dla zasobów statycznych, takich jak pliki JavaScript.
Tim Fountain

Odpowiedzi:

18

Jeśli nie ma Cache-Controlnagłówka ani Expiresnagłówka, ale istnieje Last-Modifiednagłówek (który większość serwerów WWW domyślnie wysyła dla zasobów statycznych), większość przeglądarek użyje heurystycznej świeżości, aby określić, jak długo buforować ten zasób.

Typowe obliczenia tego (które są sugerowane przez RFC 7234 ) to:

(current time - last modified time) / 10

Na przykład, jeśli czas ostatniej modyfikacji obrazu stwierdza, że ​​był on ostatnio zmieniany 60 dni temu, przeglądarka może zdecydować, że może rozsądnie używać lokalnie buforowanej wersji tego obrazu przez 6 dni przed sprawdzeniem nowej wersji.

Zauważ, że w większości przypadków, jeśli włączysz odświeżanie, każesz przeglądarce pobrać nową wersję, więc w tej sytuacji ta logika nie miałaby zastosowania.

Fontanna Tima
źródło
2
A jeśli nie ma Last-Modifiednagłówka?
bertonc96