Come configurare Apache 2.2.3 per inviare "ultima modifica" ecc


9

e dire al browser di ricaricare un oggetto (e / o una pagina ... tutto sul sito) solo se è stato modificato dall'ultima visita ??? htaccess, httpd.conf ... hai una direttiva pronta giusta per il mio caso? Grazie mille

Risposte:



5

Si noti che le Last-Modifiedintestazioni sono intestazioni di cache deboli. L'attuale preferenza è usare le Cache-Controlintestazioni.

Google ha un buon articolo su questo.

Ottimizza la memorizzazione nella cache

Scadenza e controllo della cache: età massima. Questi specificano la "durata di aggiornamento" di una risorsa, ovvero il periodo di tempo durante il quale il browser può utilizzare la risorsa memorizzata nella cache senza verificare se è disponibile una nuova versione dal server Web. Sono "potenti intestazioni di cache" che si applicano incondizionatamente; ovvero, una volta impostati e scaricati la risorsa, il browser non emetterà alcuna richiesta GET per la risorsa fino al raggiungimento della data di scadenza o dell'età massima.

Ultima modifica ed ETag. Questi specificano alcune caratteristiche della risorsa che il browser controlla per determinare se i file sono uguali. Nell'intestazione Ultima modifica, questa è sempre una data. Nell'intestazione ETag, questo può essere qualsiasi valore che identifica in modo univoco una risorsa (le versioni dei file o gli hash del contenuto sono tipici). Last-Modified è un'intestazione di cache "debole" in quanto il browser applica un'euristica per determinare se recuperare l'elemento dalla cache o meno. (L'euristica è diversa tra i diversi browser.) Tuttavia, queste intestazioni consentono al browser di aggiornare in modo efficiente le sue risorse memorizzate nella cache emettendo richieste GET condizionali quando l'utente ricarica esplicitamente la pagina. I GET condizionali non restituiscono la risposta completa a meno che la risorsa non sia cambiata sul server e quindi abbiano una latenza inferiore rispetto ai GET completi.

Raccomando di utilizzare una Cache-Controlo le Expiresintestazioni secondo necessità poiché sono potenti intestazioni della cache. Alcuni sistemi ignoreranno le date dell'ultima modifica.

È quindi possibile utilizzare uno strumento simile curlo http://redbot.org per controllare le intestazioni.


2
FWIW: "debole" è qualcosa che Google ha inventato. Expiresè un'intestazione totalmente inappropriata per le risorse che non scadono. Alcune risorse possono essere modificate, ma non ad una data di scadenza. Il punto di Google è che Last-Modifiedrichiede un GET condizionale, mentre Expiresconsente alla cache del browser di saltare del tutto il GET.
Dancrumb,

1
Il termine debole è semplicemente semantica. Il punto è che l'uso delle Last-Modifiedintestazioni in assenza di altre istruzioni di memorizzazione nella cache lascia il periodo della cache al client HTTP. Se una risorsa non è stata modificata dalla Last-Modifieddata, la risorsa deve essere considerata nuova. Al contrario, quando si utilizza un'intestazione Expireso Cache-Control, l'origine può impostare un periodo di freschezza esplicito.
jeffatrackaid,

1
"debole" v "forte" è definito in tools.ietf.org/html/rfc7232#section-2.1 (Nota anche a @Dancrumb)
John Bentley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.