web-dev-qa-db-fra.com

Fichier JavaScript non mis à jour, peu importe ce que je fais

J'ai un fichier JavaScript externe et, que ce soit dans FireFox ou Chrome, que toutes les données de navigation soient effacées, il ne sera PAS mis à jour, quoi qu'il arrive. Je crois que quelque chose est arrivé quand j'ai fait une sauvegarde de mon fichier, que j'ai simplement ajouté "_thedate" à la fin du nom. Ensuite, enregistrez sous sous le nom d'origine.

Maintenant, je n'arrive pas à me débarrasser de l'ancien JS, quoi qu'il arrive à moins de changer le nom du fichier, ce que je ne veux vraiment pas faire, ou d'ajouter le script à la page PHP, qui le remplit.

Quelqu'un connaît la solution à cela?

43
Tarik

Vous êtes sûr de vous lier au même fichier, puis de le modifier?

Sur certains navigateurs, vous pouvez utiliser CTRL F5 pour forcer une actualisation.

Firebug a également un onglet net avec "Disable Browser Cache"

Mise à jour 2017:

Si vous utilisez le débogueur Google Chrome, c'est la même chose, vous pouvez aller dans la section Réseau et vous assurer que l'option "Désactiver le cache (lorsque DevTools est ouvert)" est cochée dans les paramètres du panneau du débogueur.

De même, lorsque vous liez le fichier JavaScript, utilisez

<script src="my-js-file.js?v=1"></script>

ou v=2, et ainsi de suite, lorsque vous souhaitez absolument actualiser le fichier. Ou vous pouvez aller à la console et faire une Date.now() et obtenir un horodatage, tel que 1491313943549, et utiliser

<script src="my-js-file.js?t=1491313943549"></script>

Certains outils de construction le feront automatiquement pour vous, ou peuvent être configurés pour le faire, ce qui en fait quelque chose comme:

<script src="main.742a4952.js"></script>

qui va essentiellement casser la cache.

Remarque que lorsque vous utilisez le v=2 ou le t=1491313943549, ou le main.742a4952.js, vous avez également l’avantage que pour vos utilisateurs, ils disposeront également de la version la plus récente.

67

Pourquoi ne pas ajouter un "? 2" à la balise?

<script src="a.js?2"></script>

Le serveur doit renvoyer le même fichier avec ou sans le «? 2», mais le navigateur doit le voir comme un fichier différent et le télécharger à nouveau. Vous pouvez simplement changer cette chaîne de requête chaque fois que le fichier est modifié.

adapté de: http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

15
nsdel

J'ai déjà eu ce problème auparavant, c'est très frustrant, mais j'ai trouvé un moyen de contourner le problème. Saisissez l'adresse complète du fichier js (par exemple, votrehôte.com/javascript.js) et chargez-le. Vous verrez probablement l'ancienne version chargée. Appuyez ensuite sur f5 pour actualiser cette page et vous devriez voir la nouvelle version se charger. Le fichier js va maintenant être mis à jour dans votre cache et le code doit être exécuté comme prévu.

12
Anthony

La solution que j'utilise est . Utilisation de Firefox
1. en utilisant développeur web -> Console Web
2. ouvrez le fichier de script Java dans un nouvel onglet.
3. Actualiser le nouvel onglet, vous devriez voir votre nouveau code.
4. Actualiser la page d'origine 
5. Vous devriez voir vos changements.

9
Richard Culmone

Renommez temporairement votre fichier js en quelque chose d'autre. C'est la seule chose qui a fonctionné pour moi.

2

Le meilleur moyen de contourner les caches de navigation consiste à ajouter un nombre aléatoire au chemin du fichier js.

Exemple en pseudo-code:

// generate a random number
int i = Random.Next();
echo "<script src='a.js?'" + i + "></script>";

Cela garantira que votre navigateur recharge toujours le fichier, car il pense qu'il s'agit d'un fichier différent en raison du nombre aléatoire dans l'URL.

Le serveur retournera toujours le fichier et ignorera ce qui vient après le "?".

1
xyzzy.rad

J'ai eu ce problème et résolu dans Chrome en désactivant simplement le cache: - Cliquez F12; - Allez sur l'onglet Réseau; - Cliquez sur "Désactiver le cache".

Êtes-vous sûr à 100% que votre navigateur charge même le script? Accédez à votre page dans Firefox et utilisez la console de Firebug pour vérifier si le script a été chargé ou non.

0
Glenn Nelson

J'ai le même problème depuis un moment, et je parviens à comprendre ... Et mon cas était parce que j'ai 2 javascript avec le même nom de fonction. 

0
Mark Khor

Un peu tard pour la fête, mais si vous le mettez dans votre code HTML, votre site Web ne sera pas mis à jour. Il faut un peu plus de temps au site Web pour le chargement, mais je l’aime bien pour le débogage. Tiré de cette réponse: Comment vider le cache du navigateur par programmation?

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
0
user5399481