Ho una pagina che carica un sacco di immagini, css e javascript. Ho aggiunto un'intestazione Expires di gran lunga futura e ho impostato Cache-Control in pubblico su queste dipendenze esterne, quindi dovrebbero essere memorizzate nella cache. Ma ogni volta che faccio un post/reindirizza/ottieni chrome prova a caricarli di nuovo. Questo comportamento è molto simile al ricaricamento della pagina. Ho aggiunto ETags e gestito l'intestazione If-None-Match che aiuta un po ', ma genera ancora troppe richieste inutili.Ricarica pagina intera su post/reindirizzamento/ignora controllo cache
Come si comunica a chrome e safari per ottenere i file dalla cache?
chrome NOK
safari NOK
firefox OK
ie OK
vedere anche Full page reload on Post/Redirect/Get ignoring cache control sul forum di assistenza di Google.
Chiarimento:
non voglio il browser per richiedere image1.png
due volte. Dovrebbe essere memorizzato nella cache.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Esempio:
ho creato un semplice esempio per illustrare il problema.
intestazioni:
le intestazioni mando con l'immagine sono:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
che dovrebbe rendere più cache per 24 ore. Non c'è Vary: * o qualcosa del genere.
Aggiornamento: Questo comportamento è ora presente anche in Safari Mobile su iOS 4. Una regressione orribile, oltre che in termini di velocità di caricamento della pagina.
Aggiornamento: C'è una segnalazione di bug su questo problema nel webzilla bugzilla. Bug 38690 - Submitting a POST that leads to a server redirect causes all cached items to redownload
Aggiornamento: il problema persiste su iOS 4.0.1
Aggiornamento: il problema persiste su iOS 4,1
Aggiornamento: il problema persiste su iOS 4.2
Aggiornamento: il problema persiste su iOS 4.2.1 e in Chrome dalla versione 6 fino a 9.
Aggiornamento: C'è un bugreport su questo problema nel progetto Chromium.(È possibile stella a dimostrare il tuo affetto) Issue 68621: Post/Redirect/Get ignoring cache instructions
Aggiornamento: il problema persiste su Chrome dalla versione 6 fino a 10. Ora è un bug 9 mesi di età.
Aggiornamento: Il problema è stato risolto a partire dal 2011-03-21 19:33:07 PST. Ciò si riflette nel comportamento di chrome 12 (canarino).
È un problema di webkit, piuttosto che un problema specifico con Chrome stesso. –
@Dan, lo so, ma mi aspetto che i ragazzi di Google risolvano questo problema in una delle loro numerose versioni. C'è una patch disponibile, ma non è ancora inclusa in chrome. –
Ho pensato che la patch causasse una regressione, motivo per cui non è stata accettata? –