2012-08-31 11 views
11

A causa di una configurazione errata del nostro server web, il dominio principale ha inviato un reindirizzamento 302 in una nuova posizione. Abbiamo risolto il problema. Quando svuoti la cache del browser, tutto funziona correttamente ora.Per quanto tempo un reindirizzamento 302 viene salvato nel browser?

Per il client "normale" che non svuota la cache: Quanto dura il reindirizzamento 302 nel browser?

risposta

14

Non dovrebbe essere memorizzato nella cache a meno che non ci sia anche un'intestazione Cache-Control o Expires restituita dal server web. In base a RFC 2616, section 10.3.3 302 Found

La risorsa richiesta risiede temporaneamente in un URI diverso. Poiché il reindirizzamento potrebbe essere modificato occasionalmente, il client DOVREBBE continuare a utilizzare l'URI di richiesta per richieste future. Questa risposta è memorizzabile nella cache solo se indicata da un campo di intestazione Cache-Control o Expires.

+2

Grazie. Sembra che il mio browser di prova predefinito (Chrome) mi abbia appena ingannato a proposito di questo: http://code.google.com/p/chromium/issues/detail?id=103458 (cache di Chrome, altre no) –

+3

@OleAlbers. Stavo per modifica la mia risposta con una nota (prima della mia morte su Internet) che sebbene la RFC affermi che i client ** DEVONO ** continuare a utilizzare l'URI originale, che non significa che tutti i browser lo faranno, dovrà essere preso come un caso per caso. –

0

Dipende dalle impostazioni del caching del browser del singolo client: IE ha un'opzione per "NON ESEGUI" controllare le nuove pagine, ha lo stesso effetto sui reindirizzamenti.
E le impostazioni "Automatico" di AFAIR IE (impostazione predefinita?) Non sono molto migliori.

9

Lo standard a cui fa riferimento Jon Lin utilizza "DOVUTO", che è not as strong as "MUST" nel gergo RFC. Questa non è solo una distorsione teorica; CloudFlare, per esempio, does cache redirects:

Se non viene fornito alcun header di cache (senza Cache-Control o Expires) e l'URL è memorizzabile nella cache (.jpg, css, js ecc), allora CloudFlare cache sia 301 e 302s. Cache 301 per un paio d'ore e 302 secondi per un periodo di tempo più breve di (~ 20 minuti).

così si dovrebbe o assicurarsi la possibilità di gestire o utilizzare le intestazioni espliciti (ad esempio Cache-Control: private, no-cache) per indirizzare i browser e intermedi contro la memorizzazione nella cache di esso.

+0

Sì, questo era il problema per me - non specificare 'Cache-Control' stava causando il reindirizzamento della cache. Puoi dare un'occhiata a questo thread per un look più completo alla specifica delle intestazioni no-cache: https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers –