Pamiętaj, że Last-Modified
nagłówki to słabe nagłówki pamięci podręcznej. Obecnie preferowane jest używanie Cache-Control
nagłówków.
Google ma dobry artykuł na ten temat.
Zoptymalizuj buforowanie
Wygasa i kontrola pamięci podręcznej: maksymalny wiek. Określają one „czas życia świeżości” zasobu, to znaczy okres, w którym przeglądarka może korzystać z zasobu buforowanego bez sprawdzania, czy nowa wersja jest dostępna z serwera WWW. Są to „silne nagłówki buforujące”, które obowiązują bezwarunkowo; oznacza to, że po ich ustawieniu i pobraniu zasobu przeglądarka nie wysyła żadnych żądań GET dla zasobu, dopóki nie wygaśnie data ważności lub maksymalny wiek.
Ostatnia modyfikacja i ETag. Określają one pewne cechy zasobu, który przeglądarka sprawdza, aby ustalić, czy pliki są takie same. W nagłówku Ostatnia modyfikacja jest to zawsze data. W nagłówku ETag może to być dowolna wartość, która jednoznacznie identyfikuje zasób (typowe są wersje plików lub skróty treści). Ostatnia modyfikacja to „słaby” nagłówek buforowania, ponieważ przeglądarka stosuje heurystykę w celu ustalenia, czy pobrać element z pamięci podręcznej, czy nie. (Heurystyka różni się w zależności od przeglądarki). Jednak te nagłówki pozwalają przeglądarce na efektywną aktualizację pamięci podręcznej poprzez wydawanie warunkowych żądań GET, gdy użytkownik jawnie przeładuje stronę. Warunkowe GET nie zwracają pełnej odpowiedzi, chyba że zasób zmienił się na serwerze, a zatem mają mniejsze opóźnienie niż pełne GET.
Polecam użycie jednego Cache-Control
lub Expires
nagłówków w razie potrzeby, ponieważ są to silne nagłówki pamięci podręcznej. Niektóre systemy ignorują daty ostatniej modyfikacji.
Następnie możesz użyć narzędzia takiego jak curl
lub http://redbot.org, aby sprawdzić nagłówki.
Expires
jest całkowicie nieodpowiednim nagłówkiem dla zasobów, które nie wygasają. Niektóre zasoby mogą być modyfikowane, ale nie w określonym terminie wygaśnięcia. Chodzi o to, że GoogleLast-Modified
wymaga warunkowego GET, aleExpires
pozwala pamięci podręcznej przeglądarki całkowicie pominąć GET.Last-Modified
nagłówków przy braku innych instrukcji buforowania pozostawia okres buforowania klientowi HTTP. Jeśli zasób nie został zmodyfikowany od tejLast-Modified
daty, należy go uznać za nowy. Natomiast w przypadku użycia nagłówkaExpires
lubCache-Control
nagłówka źródło może ustawić wyraźny okres świeżości.