Firefox 5 "caching" 301 reindirizzamenti


92

C'è un modo per disabilitare questa "funzionalità"?

Ad esempio, se viene effettuata una richiesta http://localhost/foo.htmlche ho specificato a '301' all'indirizzo root, tutte le richieste successive per foo.htmlbypassare completamente il server web e ffox 5 controllerà la sua cache, leggerà che questo URL è stato '301' in precedenza e reindirizzare senza nemmeno verificare la presenza di modifiche.

Se ho smesso foo.htmldi 301'ing, devo svuotare la cache di Firefox per "risolvere" che ciò accada.

Chrome, IE e la versione precedente di Firefox non lo fanno.


Anche l'eliminazione della cache non risolve questo errore per me (Firefox 17.0.1, Linux).
Konrad Höffner

2
@kirdie Nella finestra di dialogo "cancella cronologia recente", assicurati di impostare l'intervallo di tempo su "tutto" e seleziona la casella di controllo "cache". Se l'intervallo di tempo selezionato è più recente delle tue visite all'URL reindirizzato, la voce della cache non verrà cancellata.
Kelvin

13
@kirdie e tutti coloro che hanno lo stesso problema: guarda la cronologia con Ctrl + H. Quindi fai clic con il pulsante destro del mouse sul sito e scegli "elimina tutta la cronologia per questo sito" (o qualcosa di simile). Che ha fatto per me.
Lars Nyström

4
@ LarsNyström: Sto sviluppando un'app Web e mi sono imbattuto in questo - il tuo suggerimento ha funzionato perfettamente per me. Era "Dimentica questo sito" in FF20.0
cincodenada

1
Non viene 301 chiamato "spostato in modo permanente " Se ho un server che serve solo https e le persone accedono al mio nome di dominio utilizzando http (già abbastanza grave, perché rivelano l'uri della richiesta), vorrei che il browser ricordasse che in modo permanente e non controllare http ogni volta.

Risposte:


45

301 è solo un normale codice di risposta memorizzabile nella cache. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2 dice:

This response is cacheable unless indicated otherwise. 

Quindi, se non vuoi che venga memorizzato nella cache, il tuo server deve indicare il contrario attraverso le normali intestazioni utilizzate per controllare il comportamento della cache.

Puoi anche svuotare la cache manualmente .


7
Credo che sarebbe più semplice utilizzare invece un 302, che non è memorizzabile nella cache per impostazione predefinita.
Frank Farmer,

22
@ Boris Zbarsky: La domanda non è più "Come svuotare la cache" piuttosto che "Come posso evitare che la scrittura nella cache si verifichi in primo luogo"?
Bobby Jack

4
La domanda mi sembrava sicuramente "Come faccio a evitare di dover svuotare la cache"!
Boris Zbarsky

17
Fa schifo perché non puoi "shift-ricaricare" un reindirizzamento anche quando sai che è sbagliato. Ogni altra risorsa memorizzata nella cache danneggiata può essere ricaricata separatamente, ma non questi dannati reindirizzamenti.
Sam Watkins

1
Ho provato a utilizzare i reindirizzamenti 302 da IIS, ma le versioni recenti di Firefox (e Chrome, Edge e IE) memorizzano nella cache anche quelli, a giudicare dal loro comportamento. Ho scoperto che l'apertura e l'uccisione di una finestra privata è il modo migliore per testare i siti Web ed evitare di avvelenare la cache del browser.
dsmtoday

117

In Firefox, se si dispone dell'addon della barra degli strumenti "sviluppatore web". Puoi fare clic su disabilita -> disabilita cache -> controlla ogni volta la nuova versione della pagina. Quindi ricarica l'URL e aggiornerà la cache. Quindi non è necessario svuotare l'intera cache.

Dal commento di cptstubing06, quanto segue può aiutare a svuotare la cache:

  1. Digita Ctrl+lper posizionare il cursore sulla barra degli indirizzi.
  2. Digita about:configper aprire le impostazioni di configurazione .
  3. Conferma eventuali avvisi.
  4. Digitare browser.cacheseguito da Enterper filtrare le impostazioni.
  5. Fare doppio clic browser.cache.check_doc_frequency.
  6. Modificare il valore da 3a 1.
  7. Fare clic su OK.
  8. Rivisita la pagina 301 ossessivamente cache.
  9. Al termine, reimpostare la frequenza su 3.

Firefox dovrebbe ora reindirizzare alla nuova pagina 301, non recuperando più la pagina reindirizzata dalla cache.


4
Questa è un'ottima soluzione per me: voglio un 301 memorizzato nella cache il 99% delle volte, ma una volta in blu potrei aver bisogno di cambiare la posizione del reindirizzamento e non voglio svuotare TUTTA la cache. Giusto per chiarire, Firefox viene fornito con il proprio Web Developermenu sotto gli strumenti, che non è l'addon. Anche l'addon viene chiamato Web Developer, ma viene visualizzato nel menu Strumenti come Web Developer Extensione può essere scaricato qui: addons.mozilla.org/en-us/firefox/addon/web-developer .
cptstubing06

5
Nota: se desideri che Firefox aggiorni la cache per il tuo URL reindirizzato, puoi utilizzare Web Developer Extensiontemporaneamente il comando per controllare il comportamento di modifica di Firefox per verificare sempre la presenza di una nuova versione, quindi reimpostare l'impostazione normale. Questo è sotto Estensione Web Develoepr -> Disabilita -> Disabilita cache -> Controlla la versione più recente della pagina -> Controlla ogni volta la versione più recente della pagina.
cptstubing06

1
Qualunque sia il metodo scelto, la procedura consiste nel modificare questa impostazione per verificare sempre la presenza di una nuova versione, quindi caricare l'URL con il reindirizzamento memorizzato nella cache. Quindi raggiungerà il server e otterrà qualsiasi nuova risposta esistente per quell'URL e aggiornerà la sua cache con la nuova risposta. Quindi, puoi reimpostare la frequenza di controllo della cache sul valore originale (l'impostazione predefinita è "Quando la pagina non è aggiornata", ma sto andando con "Una volta per sessione" in modo che questo scenario esatto venga gestito senza il mio coinvolgimento ora).
cptstubing06

@ cptstubing06 grazie per il suggerimento! vorrei che lo avessi inviato come soluzione in modo da poterlo votare a favore come il modo migliore per gestirlo quando non vuoi svuotare l'intera cache.
Mercurybullet

Cordiali saluti, potresti dover disabilitare DNS over HTTPSaffinché funzioni come previsto.
user2741287

25

Ho appena sperimentato questo problema e per me sono stati due problemi.

Questo particolare nome di dominio viene instradato attraverso Cloudflare, quindi ho dovuto impostarlo in modalità di sviluppo. Penso che Cloudflare stesse memorizzando nella cache il reindirizzamento 301 in modo da non dover inviare la richiesta al server. Questo passaggio potrebbe non essere applicabile a te ovviamente.

Quindi, ho semplicemente svuotato la cache di Firefox (versione 11) andando su Strumenti -> Opzioni, facendo clic sul pulsante Avanzate in alto a destra, selezionando la scheda Rete, quindi facendo clic su Cancella ora nella sezione Contenuto Web memorizzato nella cache. Nota che la mia cache era già impostata su 0, ma dovevo ancora fare clic sul pulsante Cancella adesso per fare in modo che il reindirizzamento smettesse di essere memorizzato nella cache.

Sarei interessato a sapere se qualcun altro può verificarlo.


2
+1. La tua nota sulla cancellazione della cache di Firefox ha risolto questo problema per me (come utente / client, non come proprietario del sito Web) per un particolare URL in cui Firefox non rilevava un 301 aggiornato. Grazie.
Jon Schneider

1
Puoi eliminare solo il reindirizzamento memorizzato nella cache con questo plug-in di Firefox: addons.mozilla.org/en-us/firefox/addon/cacheviewer-continued
Steve

9

Ho trovato una soluzione per questo che funziona su Firefox 26, dopo aver memorizzato nella cache un reindirizzamento obsoleto per oltre un mese e un riavvio.

  1. Nel menu Cronologia scegliere Mostra tutta la cronologia.
  2. Nella ricerca, digita il dominio con il problema di reindirizzamento nella cache per visualizzare un elenco di risultati.
  3. Fare clic con il tasto destro su uno di essi e scegliere "Dimentica questo sito".

Tutte le pagine, le immagini e i reindirizzamenti memorizzati nella cache solo per quel sito verranno rimossi dalla cache. Ciò ti consente di cancellare il reindirizzamento per il tuo sito web di sviluppo senza svuotare il resto della cache.

Come nota a margine, penso che Firefox dovrebbe solo memorizzare i reindirizzamenti nella cache per pochi giorni al massimo. La memorizzazione nella cache per oltre un mese può rendere un semplice errore un grosso problema.


2
Funziona, ma tieni presente che "Dimentica questo sito" dimenticherà anche la cronologia degli URL (per il completamento automatico) e persino le password salvate per l'intero dominio. Potrebbe non essere quello che vuoi.
tanius

5

Una soluzione rapida è utilizzare una finestra del browser privata.


Questa è la mia soluzione rapida e, a volte, basta aggiungere un punto interrogativo alla fine dell'URL.
johnsnails

5

Gli strumenti per sviluppatori integrati nelle versioni recenti di Firefox hanno una soluzione per questo. Innanzitutto, disattiva la cache quando il riquadro Dev è aperto:

  • In qualsiasi pagina, premi F12per visualizzare gli strumenti per sviluppatori
  • All'estrema destra, fai clic sull'icona a forma di ingranaggio "Opzioni casella degli strumenti"
  • Sotto Advanced Settingscontrolla l'opzioneDisable Cache (when toolbox is open)

Ora ogni volta che vuoi forzare un aggiornamento di una pagina memorizzata nella cache, carica / aggiorna la pagina con il toolbox F12 dev aperto. Firefox aggirerà la cache e riceverà nuovi dati dal server.

Preferisco questo metodo perché non cambia il comportamento del browser per la navigazione "normale" non di debug e non rischi di dimenticare di ripristinare un'impostazione globale al suo valore originale.

Verificato in Firefox 39


1
Non aiuta i reindirizzamenti nella cache.
SuperDuck

3

Un 301 indica spostato in modo permanente. Pertanto vedo che sia ragionevole memorizzare la risposta nella cache.

Hai provato a impostare le intestazioni cache-controle expires?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9


3
A volte stiamo sviluppando, o migrando server, o rintracciando un guasto, e abbiamo davvero bisogno di spegnere questa roba in quanto può davvero intralciarci.
Jason

2

Nella versione di Firefox 38.0

Menu -> Edit -> Preferences -> Advanced -> Network -> Clear Now

Ha funzionato per me.


1

301 significa spostato in modo permanente ed è cachable, quindi penso che sia il comportamento "giusto" per il browser. Dovresti usare 303 Vedi altro .


5
IE e la cache 303 di Chrome e le specifiche HTTP vengono modificate per consentirne la memorizzazione nella cache. Vedi le bozze su tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-15 . Quindi l'unico modo sicuro per impedire la memorizzazione nella cache di reindirizzamento è impostare intestazioni di controllo della cache esplicite.
Boris Zbarsky
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.