2012-07-19 14 views
14

Il mio sistema è Windows 7 x64, Chrome 20.0.1132.57 m.L'intestazione HTTP "Expires" non funziona in Chrome

Nel mio header di risposta HTTP, ho:

Cache-Control: public, max-age=1000 
Expires: *some date* 

In IE & FF, la pagina è in cache in locale e quando provo ad accedere nuovamente digitando l'URL e premere Invio, nessuna richiesta è invia e la pagina viene visualizzata correttamente. Ma in Chrome, è sempre inviare una richiesta al server con la seguente intestazione:

Cache-Control: max-age=0 

non voglio che il client invii una richiesta al mio server e quindi rispondere 304. voglio salvare il tempo di andata e ritorno .

risposta

15

Fare attenzione quando si esegue il test. Ho notato che in Chrome versione 20 se premo F5 per ricaricare la pagina, nel pannello di rete vedo nuove richieste. Hoewer se metto il cursore sulla barra del titolo, dopo l'url della pagina corrente, e premo invio, ottengo risorse dalla cache, l'intestazione whitch è stata impostata in cache.

Inoltre è meglio usare solo l'età massima. L'età massima e la scadenza sono le stesse, ma in età massima si specifica la durata.

vedere questo: http://betterexplained.com/articles/how-to-optimize-your-site-with-http-caching/ Metodo 3 e 4. Metodo

+0

ho paura che questo non è quello che vedo. ho provato a premere invio nella barra di navigazione, ma ho ottenuto lo stesso risultato. penso che Chrome possa indovinare l'IP del server, e se è un host locale, farà sempre la richiesta ... forse Google vuole rendere felici gli sviluppatori ... ma non lo hanno fatto :( – davidshen84

+0

anche su questo sito, in crome quando ispeziono le richieste di rete, vedo che ga.js ha il seguente header di risposta: Scade: mar, 14 ago 2012 20:37:18 GMT. In caso di aggiornamento F5 si ricarica, in caso di entrare nel nav barra viene dalla cache –

+3

penso di aver capito ... se si tratta di una richiesta principale, avviata dall'utente o da JS, Chrome ignorerà max-age e imporrà una richiesta da inviare ... diavolo – davidshen84

3

Ho avuto problemi simili e ho scoperto che se si effettua la richiesta con una nuova scheda Chrome che funzionerà.