Comment désactiver la mise en cache sur Firefox?


143

Pendant le développement, je dois «vider le cache» de Firefox tout le temps afin de lui permettre d'utiliser la dernière version des fichiers JavaScript.

Existe-t-il une sorte de paramètre (about: config) pour désactiver complètement la mise en cache pour les fichiers JavaScript? Ou, sinon, pour tous les fichiers?

Réponses:


229

Entrez "about: config" dans la barre d'adresse de Firefox et définissez:

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

Si vous développez localement ou utilisez le nouvel attribut manifeste de HTML5, vous devrez peut-être également définir les paramètres suivants dans about: config -

browser.cache.offline.enable = false

comment n'ai-je pas su pour ce petit bijou? Toutes sortes de goodies dans about: config!
ABrowne

2
network.http.use-cache n'est pas là pour moi. Changer browser.cache.offline.enable ne fait aucune différence pour moi.
Curtis

1
Je ne doute pas que ce soit une bonne réponse, mais cela ne semble plus être le cas dans les dernières versions de Firefox (j'utilise l'édition développeur 47.0a2 pour le moment). La désactivation de la mise en cache dans les paramètres du développeur Web est cependant efficace pour moi.
JosephStyons

61

La barre d'outils du développeur Web a une option pour désactiver la mise en cache, ce qui facilite son activation et sa désactivation lorsque vous en avez besoin.


1
CTRL-F5 ou maintenir la touche Maj enfoncée tout en cliquant sur le bouton Recharger est ce que j'ai fait dans le passé, mais la fonction "Désactiver le cache" de la barre d'outils Web Developer est un excellent moyen de le faire. Vous n'êtes pas obligé de désactiver complètement le cache de Firefox de cette façon.
Jon Onstott

1
N'oubliez pas d'avoir activé le cache après le test. ;)
neurolabs

1
@Shanimal, cela fonctionne pour moi dans 14.0.1, vous voudrez peut-être désinstaller / réinstaller ou quelque chose.
Lucas

@Lucas doh! Les éléments sur le serveur avec lequel je travaillais étaient en cache, mais j'ai oublié de supprimer mon commentaire ... Merci.
Shanimal

1
Cela ne fonctionne plus tant que chrispederick n'a pas corrigé quelques nouvelles modifications de Firefox dans la dernière version. J'irais avec la solution about: config qui est meilleure pour les développeurs.
Ligemer

12

Avez-vous essayé d'utiliser CTRL- F5pour mettre à jour la page?


6
J'ai vraiment des doutes sur le fait que cela fonctionne de manière fiable, du moins en présence d'iframes et de framesets.
Thilo

2
correct, il ne rechargera pas toujours le JS / CSS dans une iframe, mais dans Firefox, vous pouvez au moins faire apparaître ce cadre dans un nouvel onglet et le recharger là-bas.
scunliffe

J'ai toujours utilisé Ctrl-F5 .... alors j'ai trouvé qu'il ne chargerait pas mes dernières versions des fichiers js sur lesquels je travaillais :( Était également dans une iframe (je sais, les iframes sont le diable, pas mon choix ).
Gromer

Ctrl-F5 ne réinitialise pas la mise en cache des fichiers javascript. ce qu'il fait (principalement) est d'effacer votre session et vos cookies, mais pas le javascript et les feuilles de style mis en cache
AceMark

10

Il n'y a pas d'option spécifique pour désactiver la mise en cache uniquement pour JavaScript, vous devrez désactiver complètement la mise en cache.

FireBug a une option pour désactiver le cache du navigateur dans le menu déroulant de l'onglet Réseau.


8

Sur la même page que vous souhaitez désactiver la mise en cache, procédez comme suit: Pour info: la version sur laquelle je travaille est 30.0

Vous pouvez :

ouvrir la barre d'outils du développeur Web développeur web ouvert

et choisissez désactiver le cache

Après cela, il rechargera la page à partir de sa propre page (vous êtes sur) et tout est mis en cache et toute demande ultérieure est également rechiffrée à chaque fois et vous pouvez garder le développeur Web toujours ouvert pour garder un œil et vous assurer qu'il est toujours activé (vérifier) .


8

Outils de développement Firefox 48

Vous permet de désactiver le cache uniquement lorsque la boîte à outils est ouverte, ce qui est parfait pour le développement Web:

  • F12
  • boîte de vitesses dans le coin supérieur droit
  • faire défiler vers le bas Paramètres avancés
  • cochez "Désactiver le cache (lorsque la boîte à outils est ouverte)"

entrez la description de l'image ici

https://stackoverflow.com/a/27397425/895245 a un contenu similaire, mais le positionnement a un peu changé depuis.


1
Merci ... il y a des informations là-bas (et dans ce fil) sur la définition de network.http.use-cache sur false ... mais dans ma version de FF (53) ce paramètre n'existe plus ... Cette technique est de loin supérieure en tous cas.
mike rodent

7

Si vous travaillez avec du code côté serveur, vous pouvez générer un nombre aléatoire et l'ajouter à la fin du src de la manière suivante ...

src = "votreJavascriptFile.js? randomNumber = 434534"

le randomNumber étant généré aléatoirement à chaque fois.


C'est la seule solution qui a fonctionné pour moi en plus de vider manuellement le cache du navigateur à chaque actualisation.
Curtis

4

Je sais que je ressuscite une question ancienne, mais j'essayais de résoudre ce problème aujourd'hui et d'avoir une solution alternative. Activer la mise en cache lorsque je veux tester n'était pas vraiment acceptable pour moi, et comme d'autres l'ont mentionné, l'actualisation difficile (ctrl + shift + r) ne fonctionne pas toujours.

Au lieu de cela, j'ai choisi de mettre ce qui suit dans mon fichier vhost.conf (peut également être fait dans .htaccess) sur mon environnement de développement:

<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>

Sur mon environnement de développement, cela garantit que js et css sont toujours récupérés. De plus, cela n'affecte pas le reste de ma navigation, et cela fonctionne également pour tous les navigateurs, donc tester dans chrome / ie etc est également facile.

Vous avez trouvé l'extrait de code ici, ainsi que d'autres astuces pratiques pour Apache: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Pour m'assurer que mes clients voient toujours la dernière version en production, nous incrémentons la chaîne de requête sur les js include à chaque mise à jour, ie

jquery.somefile.js?v=0.5

Cela force les navigateurs de mes clients à mettre à jour leur cache local lorsqu'ils voient une nouvelle chaîne de requête, mais met ensuite en cache la nouvelle copie jusqu'à ce que le fichier soit à nouveau mis à jour


3

La meilleure stratégie consiste à concevoir votre site pour créer une URL unique vers vos fichiers JS, qui est réinitialisée chaque fois qu'il y a un changement. De cette façon, il se met en cache lorsqu'il n'y a pas eu de changement, mais se recharge immédiatement quand un changement se produit.

Vous devrez vous adapter à vos outils d'environnement spécifiques, mais si vous utilisez PHP / Apache, voici une excellente solution pour vous et les utilisateurs finaux.

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


3

Vous pouvez utiliser CTRL- F5pour recharger en contournant le cache.

Vous pouvez définir les préférences dans Firefox pour ne pas utiliser le cache

network.http.use-cache = false

Vous pouvez configurer votre serveur Web pour envoyer des en-têtes no-cache / Expires / Cache-Control pour les fichiers js.

Voici un exemple de serveur Web Apache.


est-ce shift-f5 ou ctrl-f5?
Thilo

3

Si vous utilisez FireBug, dans le menu déroulant de l'onglet Réseau, il y a une option pour désactiver le cache du navigateur.

entrez la description de l'image ici


Firebug est interrompu.
K7AAY

1

Il y a des avantages et des inconvénients aux deux dernières solutions publiées, mais ce sont toutes deux d'excellentes solutions à mon humble avis.

  1. Vous pouvez ou non souhaiter que votre identifiant de session soit intégré dans votre URL de cette manière pour une sécurité plus stricte. Mais dans le développement, cela ne devrait pas avoir d'importance, mais que faire si vous oubliez de le supprimer? Cela fonctionne-t-il vraiment aussi? N'auriez-vous pas besoin de quelque chose comme un générateur de nombres séquentiels (nombre de hits stocké dans la session, ou peut-être même juste si 1 puis 0, si 0 puis 1)?

  2. Ajouter un identifiant de session (ou n'importe quel séquenceur) signifie que vous devez vous rappeler de l'ajouter à chaque ressource que vous ne voulez pas mettre en cache. D'une part, c'est mieux car vous pouvez simplement inclure votre identifiant de session avec la ressource que vous développez et testez activement. D'un autre côté, cela signifie que vous devez le faire et que vous devez vous rappeler de supprimer cela pour la production.

  3. La modification du fichier vhost.conf ou .htaccess fait très bien l'affaire sans qu'il soit nécessaire de se rappeler d'ajouter et de supprimer l'ID de session. Mais l'inconvénient est que les performances de toutes les ressources js et css seront affectées, et si vous avez des fichiers volumineux, cela va vous ralentir.

Les deux semblent être d'excellentes solutions élégantes - cela dépend de vos besoins.


1

J'utilise CTRL- SHIFT- DELETEqui active la fonction de confidentialité, vous permettant de vider votre cache, de réinitialiser les cookies, etc., en même temps. Vous pouvez même le configurer pour qu'il le FAIT, au lieu de faire apparaître une boîte de dialogue vous demandant de confirmer.


1

Dans les versions supérieures de Firefox, comme Nightly, il existe une option nommée "désactiver le cache", vous pouvez la trouver en cliquant sur l'engrenage. Et ces options ne fonctionnent que dans la session en cours, ce qui signifie que lorsque vous fermez l'inspecteur et le redémarrez, vous devez le vérifier à nouveau si vous souhaitez désactiver la capture.


Je souhaite qu'il y ait un moyen de désactiver le cache globalement. C'est très ennuyeux de devoir le vérifier à chaque fois que j'ouvre l'inspecteur.
Carlos Garcia

0

Après 2 heures de navigation pour diverses alternatives, c'est quelque chose qui a fonctionné pour moi.

Mon exigence était de désactiver la mise en cache des fichiers js et css dans mon application Web sécurisée Spring. Mais en même temps, mettre ces fichiers en cache "dans" une session particulière.

Passer un identifiant unique à chaque demande est l'une des approches conseillées.

Et c'est ce que j'ai fait: - Au lieu de

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

j'ai utilisé

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

Tous les inconvénients de l'approche ci-dessus sont les bienvenus. Problèmes de sécurité ?


0

Dans Firefox 45, les options de cache disque peuvent être définies en modifiant la valeur de: browser.cache.disk.enable

La valeur peut être définie sur la page "about: config".

Sur http://kb.mozillazine.org/About:config_entries#Browser, j'ai trouvé la description suivante pour "browser.cache.disk.enable":

True (par défaut): utiliser le cache disque, jusqu'à la capacité spécifiée dans browser.cache.disk.capacity False: désactiver le cache disque (même effet que définir browser.cache.disk.capacity sur 0)


0

Tout d'abord, cela peut être fait facilement, par exemple par PHP pour forcer le navigateur à renouveler les fichiers en fonction de la date du cache (heure d'expiration). Si vous en avez juste besoin pour des besoins expérimentaux, essayez d'utiliser ctrl + shift + del pour vider tout le cache à la fois dans le navigateur Firefox. La troisième solution consiste à utiliser de nombreux modules complémentaires qui sortent de Firefox pour vider le cache en fonction des délais.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.