Come disattivare la memorizzazione nella cache su Firefox?


143

Durante lo sviluppo devo sempre "svuotare la cache" in Firefox per poter utilizzare l'ultima versione dei file JavaScript.

Esiste una sorta di impostazione (about: config) per disattivare completamente la memorizzazione nella cache per i file JavaScript? O, in caso contrario, per tutti i file?

Risposte:


229

Inserisci "about: config" nella barra degli indirizzi di Firefox e imposta:

browser.cache.disk.enable = false
browser.cache.memory.enable = false

Se si sviluppa in locale o si utilizza il nuovo attributo manifest di HTML5, potrebbe essere necessario impostare anche quanto segue in about: config -

browser.cache.offline.enable = false

come non sapevo di questa piccola gemma? Tutti i tipi di chicche in circa: config!
ABrowne,

2
network.http.use-cache non è lì per me. Cambiare browser.cache.offline.enable non fa differenza per me.
Curtis,

1
Non dubito che questa sia una buona risposta, ma non sembra più essere vera negli ultimi build di Firefox (al momento sto usando l'edizione per sviluppatori 47.0a2). La disabilitazione della memorizzazione nella cache nelle impostazioni dello sviluppatore Web è tuttavia efficace per me.
JosephStyons,

61

La barra degli strumenti per sviluppatori Web ha un'opzione per disabilitare la memorizzazione nella cache che semplifica l' attivazione e la disattivazione quando necessario.


1
CTRL-F5 o tenere premuto il tasto Maiusc mentre si fa clic sul pulsante Ricarica è ciò che ho fatto in passato, ma la funzione "Disabilita cache" della barra degli strumenti Web Developer è un ottimo modo per farlo. Non è necessario disabilitare completamente la cache di Firefox in questo modo.
Jon Onstott,

1
Tuttavia, dovresti ricordare di abilitare la cache dopo il test. ;)
neurolabs

1
@Shanimal, Funziona per me in 14.0.1, potresti voler disinstallare / reinstallare o qualcosa del genere.
Lucas,

@Lucas doh! Gli elementi sul server con cui stavo lavorando erano memorizzati nella cache, ma ho dimenticato di eliminare il mio commento ... Grazie.
Shanimal,

1
Questo non funziona più fino a quando chrispederick non risolve alcune nuove modifiche di Firefox nell'ultima versione. Andrei con la soluzione about: config che è meglio per gli sviluppatori.
Ligemer,

12

Hai provato a usare CTRL- F5per aggiornare la pagina?


6
Dubito davvero che funzioni in modo affidabile, almeno in presenza di iframe e set di frame.
Thilo,

2
corretto, non ricaricherà sempre il JS / CSS in un iframe, ma in Firefox puoi almeno far apparire quel frame in una nuova scheda e ricaricare lì.
scunliffe,

Ho sempre usato Ctrl-F5 .... poi ho scoperto che non caricava le mie versioni più recenti dei file js in cui stavo lavorando :( Era anche in un iframe (so, iframe è il diavolo, non la mia scelta ).
Gromer

Ctrl-F5 non reimposta la memorizzazione nella cache dei file javascript. quello che fa (principalmente) è cancellare la sessione e i cookie, ma non il javascript e i fogli di stile memorizzati nella cache
AceMark,

10

Non esiste un'opzione specifica per disabilitare la memorizzazione nella cache solo per JavaScript, dovrai disabilitare completamente la memorizzazione nella cache.

FireBug ha un'opzione per disabilitare la cache del browser nel menu a discesa della scheda Rete.


8

Nella stessa pagina si desidera disabilitare la memorizzazione nella cache: FYI: la versione su cui sto lavorando è 30.0

Puoi :

apri la barra degli strumenti di sviluppo web sviluppatore web aperto

e seleziona disabilita cache

Dopodiché ricaricherà la pagina dal suo (sei su) e ogni cosa viene ricollegata e ogni ulteriore richiesta viene ripetuta ogni volta e puoi tenere lo sviluppatore web sempre aperto per tenere d'occhio e assicurarti che sia sempre attivo (controlla) .


8

Strumenti per sviluppatori Firefox 48

Consente di disattivare la cache solo quando la casella degli strumenti è aperta, il che è perfetto per lo sviluppo Web:

  • F12
  • cambio nell'angolo in alto a destra
  • scorrere verso il basso in alto Impostazioni avanzate
  • seleziona "Disabilita cache (quando la casella degli strumenti è aperta)"

inserisci qui la descrizione dell'immagine

https://stackoverflow.com/a/27397425/895245 ha contenuti simili, ma il posizionamento è cambiato un po 'da allora.


1
Grazie ... ci sono informazioni là fuori (e in questo thread) sull'impostazione di network.http.use-cache su false ... ma nella mia versione di FF (53) quell'impostazione non esiste più ... Questa tecnica è di gran lunga superiore Comunque.
mike rodent,

7

Se stai lavorando con il codice lato server potresti generare un numero casuale e aggiungerlo alla fine di src nel modo seguente ....

src = "yourJavascriptFile.js? RandomNumber = 434.534"

con randomNumber generato casualmente ogni volta.


Questa è l'unica soluzione che ha funzionato per me oltre a cancellare manualmente la cache del browser ogni volta che aggiorno.
Curtis,

4

So che sto risorgendo una domanda antica, ma stavo cercando di risolvere questo problema oggi e ho una soluzione alternativa. Attivare la memorizzazione nella cache quando voglio eseguire il test non è stato davvero accettabile per me, e come altri hanno già detto, l'aggiornamento rapido (ctrl + shift + r) non sempre funziona.

Invece, ho scelto di inserire quanto segue nel mio file vhost.conf (può anche essere fatto in .htaccess) sul mio ambiente di sviluppo:

<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

Nel mio ambiente di sviluppo, questo assicura che js e css vengano sempre recuperati. Inoltre, non influisce sul resto della mia navigazione, e funziona anche per tutti i browser, quindi test in Chrome / ie etc è anche facile.

Ho trovato lo snippet qui, anche altri utili trucchi per apache: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Per essere sicuri che i miei clienti vedano sempre l'ultima versione in produzione, incrementiamo la stringa di query su js include su ogni aggiornamento, ovvero

jquery.somefile.js?v=0.5

Questo costringe i browser dei miei clienti ad aggiornare la loro cache locale quando vedono una nuova stringa di query, ma quindi memorizza nella cache la nuova copia fino a quando il file non viene aggiornato di nuovo


3

La migliore strategia è progettare il tuo sito per creare un URL univoco per i tuoi file JS, che viene reimpostato ogni volta che si verifica una modifica. In questo modo viene memorizzato nella cache quando non è stato apportato alcun cambiamento, ma viene ricaricato immediatamente quando si verifica un cambiamento.

Dovresti adattarti ai tuoi specifici strumenti di ambiente, ma se stai usando PHP / Apache, ecco un'ottima soluzione sia per te che per gli utenti finali.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/


3

Puoi usare CTRL- F5per ricaricare bypassando la cache.

È possibile impostare le preferenze in Firefox per non utilizzare la cache

network.http.use-cache = false

Puoi configurare il tuo server web per inviare intestazioni no-cache / Expires / Cache-Control per i file js.

Ecco un esempio per il web server apache.


è maiusc-f5 o ctrl-f5?
Thilo,

3

Se si utilizza FireBug, nel menu a discesa della scheda Rete è presente un'opzione per disabilitare la cache del browser.

inserisci qui la descrizione dell'immagine


Firebug è sospeso.
K7AAY

1

Ci sono pro e contro nelle ultime due soluzioni pubblicate, ma sono entrambe ottime soluzioni IMHO.

  1. È possibile che si desideri o meno l'ID sessione incorporato nell'URL in questo modo per una maggiore sicurezza. Ma nello sviluppo non dovrebbe importare, ma cosa succede se si dimentica di rimuoverlo? Funziona davvero? Non avresti bisogno di qualcosa come un generatore di numeri sequenziale (numero di hit memorizzato nella sessione, o forse anche solo se 1 quindi 0, se 0 poi 1)?

  2. Aggiungere un ID di sessione (o qualunque sequencer) significa che è necessario ricordare di aggiungerlo a ogni risorsa che non si desidera memorizzare nella cache. Da un lato è meglio perché puoi semplicemente includere il tuo ID di sessione solo con quella risorsa che stai attivamente sviluppando e testando. D'altra parte, significa che devi farlo e devi ricordare di rimuoverlo per la produzione.

  3. La modifica di vhost.conf o del file .htaccess risolve il problema senza la necessità di ricordare di aggiungere e rimuovere l'id di sessione. Ma il rovescio della medaglia è che le prestazioni di tutte le risorse js e css saranno influenzate e se hai file di grandi dimensioni, questo ti rallenterà.

Entrambi sembrano soluzioni grandiose ed eleganti - dipende dalle tue esigenze.


1

Uso CTRL- SHIFT- DELETEche attiva la funzione di privacy, che consente di svuotare la cache, ripristinare i cookie, ecc. Tutto in una volta. Puoi anche configurarlo in modo che lo faccia, invece di aprire una finestra di dialogo che ti chiede di confermare.


1

Nelle versioni precedenti di Firefox, come Nightly, esiste un'opzione denominata "disabilita cache", che puoi trovare facendo clic sull'ingranaggio. E che le opzioni funzionano solo nella sessione corrente, il che significa che quando si chiude Inspector e lo si riavvia, è necessario controllarlo di nuovo se si desidera disabilitare la cattura.


Vorrei che ci fosse un modo per disabilitare la cache a livello globale. È molto seccante doverlo controllare ogni volta che apro l'ispettore.
Carlos Garcia,

0

Dopo 2 ore di ricerca di varie alternative, questo è qualcosa che ha funzionato per me.

Il mio requisito era disabilitare la memorizzazione nella cache dei file js e css nella mia applicazione Web protetta da primavera. Allo stesso tempo, memorizza nella cache questi file "all'interno" di una determinata sessione.

Il passaggio di un ID univoco con ogni richiesta è uno degli approcci consigliati.

E questo è quello che ho fatto: - Invece di

<script language="javascript" src="js/home.js"></script>

ero solito

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script>

Qualsiasi contro l'approccio sopra è il benvenuto. Problemi di sicurezza ?


0

In Firefox 45, è possibile impostare le opzioni della cache del disco modificando il valore di: browser.cache.disk.enable

Il valore può essere impostato nella pagina "about: config".

Su http://kb.mozillazine.org/About:config_entries#Browser ho trovato la seguente descrizione di "browser.cache.disk.enable":

Vero (impostazione predefinita): utilizza la cache del disco, fino alla capacità specificata in browser.cache.disk.capacity Falso: disabilita la cache del disco (stesso effetto dell'impostazione browser.cache.disk.capacity su 0)


0

Prima di tutto, questo può essere fatto facilmente, ad esempio da PHP per forzare il browser a rinnovare i file in base alla data della cache (tempo di scadenza). Se ne hai solo bisogno per esigenze sperimentali, prova a usare ctrl + shift + del per cancellare tutta la cache contemporaneamente nel browser Firefox. La terza soluzione consiste nell'utilizzare molti componenti aggiuntivi che escono da Firefox per cancellare la cache in base alle linee temporali.

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.