Jak skonfigurować Apache 2.2.3, aby wysłać „ostatnią modyfikację” itp

9

i powiedzieć przeglądarce, aby przeładowała obiekt (i / lub stronę ... wszystko na stronie) tylko, jeśli został zmodyfikowany od czasu ostatniej wizyty ??? htaccess, httpd.conf ... czy masz gotową dyrektywę odpowiednią dla mojej sprawy? Dziękuję Ci bardzo

smepie
źródło

Odpowiedzi:

5

Pamiętaj, że Last-Modifiednagłówki to słabe nagłówki pamięci podręcznej. Obecnie preferowane jest używanie Cache-Controlnagłó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-Controllub Expiresnagłó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 curllub http://redbot.org, aby sprawdzić nagłówki.

jeffatrackaid
źródło
2
FWIW: „słaby” to coś, co wymyślił Google. Expiresjest 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 Google Last-Modifiedwymaga warunkowego GET, ale Expirespozwala pamięci podręcznej przeglądarki całkowicie pominąć GET.
Dancrumb
1
Termin słaby to po prostu semantyka. Chodzi o to, że użycie Last-Modifiednagłówków przy braku innych instrukcji buforowania pozostawia okres buforowania klientowi HTTP. Jeśli zasób nie został zmodyfikowany od tej Last-Modifieddaty, należy go uznać za nowy. Natomiast w przypadku użycia nagłówka Expireslub Cache-Controlnagłówka źródło może ustawić wyraźny okres świeżości.
jeffatrackaid
1
„słaby” v „silny” jest zdefiniowany na tools.ietf.org/html/rfc7232#section-2.1 (Uwaga również do @Dancrumb)
John Bentley