221 votes

Effacer le cache en JavaScript

Comment vider le cache d'un navigateur avec JavaScript ?

Nous avons déployé le dernier code JavaScript mais nous ne parvenons pas à obtenir le dernier code JavaScript.

Note de la rédaction : Cette question est semi-dupliquée aux endroits suivants, et la réponse de la première des questions suivantes est probablement la meilleure. Cette réponse acceptée n'est plus la solution idéale.

Comment forcer le navigateur à recharger les fichiers CSS/JS mis en cache ?

Comment puis-je obliger les clients à rafraîchir les fichiers JavaScript ?

Rechargement dynamique de la source locale Javascript / données json

242voto

Kevin Hakanson Points 15498

Vous pouvez appeler window.location.reload(true) pour recharger la page en cours. Il ignorera les éléments mis en cache et récupérera de nouvelles copies de la page, des css, des images, du JavaScript, etc. sur le serveur. Cette opération n'efface pas la totalité du cache, mais a pour effet d'effacer le cache de la page sur laquelle vous vous trouvez.

Cependant, votre meilleure stratégie est de versionner le chemin d'accès ou le nom du fichier, comme indiqué dans d'autres réponses. En outre, voir Révélation de noms de fichiers : ne pas utiliser de querystring pour les raisons de ne pas utiliser ?v=n comme schéma de gestion des versions.

124voto

Greg Points 132247

Vous ne pouvez pas vider le cache avec le javascript. Une méthode courante consiste à ajouter le numéro de révision ou l'horodatage de la dernière mise à jour au fichier, comme ceci :

myscript.123.js

ou

myscript.js?updated=1234567890

48voto

Barry Gallagher Points 2333

Essayez de changer le src du fichier JavaScript ? De ceci :

<script language="JavaScript" src="js/myscript.js"></script>

A ceci :

<script language="JavaScript" src="js/myscript.js?n=1"></script>

Cette méthode devrait forcer votre navigateur à charger une nouvelle copie du fichier JS.

22voto

Alexandre T. Points 109

Outre la mise en cache toutes les heures ou toutes les semaines, vous pouvez mettre en cache en fonction des données du fichier.

Exemple (en PHP) :

<script src="js/my_script.js?v=<?=md5_file('js/my_script.js')?>"></script>

ou même utiliser le temps de modification du fichier :

<script src="js/my_script.js?v=<?=filemtime('js/my_script.js')?>"></script>

12voto

Mygod Points 3

window.location.reload(true) semble avoir été déprécié par la norme HTML5. Une façon de le faire sans utiliser de chaînes de requête est d'utiliser la fonction Clear-Site-Data en-tête qui semble en cours de normalisation .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X