2014-11-20 10 views
5

So che questa domanda viene richiesta più volte. Ma ancora non sono chiaro riguardo al concetto. Dopo aver letto molti blog e risposte a SO quello che ho ottenuto è,Qual è la differenza tra l'intestazione Etag e Expires?

Expiry headers are used when you don’t even want client (and proxies/caches) to make a request to 
the server. In ETAG, the client will check with the server for the update, but in expiry 
headers, the client will know, when to expire the file and check for an update, till then it 
(browsers and proxies/caches) won’t bother server for checking the update. 

Quindi, fondamentalmente dire se usiamo scade intestazione/max-age, non sarà nemmeno controllare il server per un file aggiornato. Quindi ho pensato di testarlo localmente.

Così ho creato su semplice file html compresi 2 file js e 1 file immagine. In IIS, ho impostato l'intestazione Expires su 2 giorni per la cartella dell'immagine. Quindi, secondo la mia comprensione, dopo aver ottenuto il file immagine dal server una volta, per la prossima richiesta non dovrebbe inviare una richiesta al server per controllare se il file immagine è stato modificato o meno.

Ma quello che ho ottenuto è che ogni volta che aggiorno la pagina vedo una richiesta inviata al server e il server restituisce uno stato 304 not modified. Ma secondo le specifiche/blog che ho letto non dovrebbe inviare una richiesta al server.

Qualcuno per favore spiega.

enter image description here

risposta

3

Per quello che hai descritto

  • E 'chiaro che ETag funziona come dovrebbe essere rispondendo con 304 not modified per la richiesta con If-None-Match campo e ETag valore.

    così ora il browser caricherà l'immagine dalla cache invece di ottenere una nuova immagine dal server che costa larghezza di banda e tempo.

  • Sembra che caching è disattivato nel tuo browser .che del perché una nuova richiesta è stata inviata prima della scadenza della cache oppure una richiesta non sarebbe stata inviata in primo luogo.

    Ecco un meraviglioso article che spiega come trovare la memorizzazione nella cache del browser è disattivato nel programatically

    Ecco un altro meraviglioso article che spiega caching e Etag in profondità.

Nota:

generale Se si utilizzano più server con di bilanciamento del carico per ospitare il tuo sito web quindi semplici configurazioni ETAG probabile che a costare di più banda avendo Etag nella loro intestazione e non ha scopo che sta controllando se la cache del browser è valida. (È sempre intenzione di dire non valido)

0

La parte importante è ciò che hai detto: Aggiorna la pagina. In questo caso, il browser sta cercando di fornire il nuovo contenuto in modo che non abbia altra opzione che contattare il server e controllare tutte le risorse. (C'è l'estensione di controllo della cache immutable che impedisce questo comportamento ma non è ampiamente utilizzato e implementato).

Se si desidera visualizzare il comportamento del browser che rispetta le cache senza ricaricare, è necessario utilizzare "l'inserimento di pagina standard". Segui un link alla pagina o usa un'altra scheda e scrivi l'url della pagina nella barra dell'URL e premi Invio.

Le cache rispettano i tempi di scadenza, quindi se il documento non è aggiornato, viene restituito dalla cache. Se scaduto, ETag è utilizzato per la convalida della risorsa (e dopo la convalida è possibile che la risorsa non sia ancora modificata - 304 risposta)

Problemi correlati