44 votes

Comment forcer IE à recharger javascript?

J'utilise Internet Explorer 8 sur Vista et chaque fois que je modifie un fichier javascript puis que je commence le débogage, je dois appuyer sur Ctrl + F5 pour le faire recharger mon code javascript. Y a-t-il un moyen de le faire recharger automatiquement le javascript lorsque je commence le débogage, sans perdre les gains de performances obtenus simplement en naviguant sur le net?

Ouais ouais, je sais que vous n'aimez probablement pas IE, mais gardez à l'esprit que la question n'est pas "Quel est le meilleur navigateur?".

48voto

Paolo Bergantino Points 199336

Ajouter une chaîne à la fin de votre URL de briser le cache. J'ai l'habitude de faire (avec PHP):

<script src="/my/js/file.js?<?=time()?>"></script>

De sorte qu'il recharge à chaque fois alors que je suis en train de travailler sur elle, et puis l'enlever quand il va dans la production. En réalité, j'ai résumé ce un peu plus, mais l'idée reste la même.

Si vous regardez le source de ce site, ils ajouter le numéro de révision à la fin de l'URL d'une manière similaire à forcer les modifications sur nous à chaque fois qu'ils mettent à jour les fichiers javascript.

25voto

Alconja Points 10626

Paolo idée générale (c'est à dire effectivement de changer une partie de l'uri de la demande) est votre meilleur pari. Cependant, je vous suggère d utiliser une valeur statique comme un numéro de version de mise à jour lorsque vous avez modifié votre fichier de script de sorte que vous pouvez toujours obtenir des gains de performance de la mise en cache.

Donc, soit quelque chose comme ceci:

<script src="/my/js/file.js?version=2.1.3" ></script>

ou peut-être

<script src="/my/js/file.2.1.3.js" ></script>

Je préfère la première option, car elle signifie que vous pouvez maintenir le un seul fichier au lieu d'avoir à constamment le renommer (qui, par exemple, maintient la consistance de la version de l'histoire dans votre contrôle de code source). Bien sûr, une (comme je l'ai décrit) impliquerait la mise à jour de vos déclarations à chaque fois, de sorte que vous pouvez venir avec une dynamique manière de faire, comme le remplacement d'une valeur fixe avec une dynamique chaque fois que vous déployez (à l'aide de Ant ou quoi que ce soit).

18voto

Vadim Points 9146

Lorsque vous travaillez avec une page Web ou un fichier javascript, vous souhaitez que celui-ci soit rechargé à chaque fois que vous le modifiez. Vous pouvez modifier les paramètres dans IE 8 pour que le navigateur ne mette jamais en cache.

Suivez ces étapes simples.

  1. Sélectionnez Outils-> Options Internet.
  2. Dans l'onglet Général, cliquez sur le bouton Paramètres dans la section Historique de navigation.
  3. Cliquez sur le bouton radio "Chaque fois que je visite la page Web".
  4. Cliquez sur le bouton OK.

6voto

coderob Points 370

Si vous êtes à la recherche pour juste le faire sur VOTRE navigateur (un.k.un. ne pas forcer sur vos utilisateurs), alors je ne serais PAS fixer votre code de ne pas utiliser le cache. Comme José dit, il y a une perte de performance.

Et je ne serais pas désactiver la mise en cache sur IE tout à fait, parce que vous perdez un gain de performance pour chaque site web que vous visitez. Vous pouvez dire, c'est à dire toujours actualiser à partir du serveur pour un site spécifique ou d'une session de navigation:

  1. Ouvrir IE Outils de développement
  2. Choisissez le Cache à partir du Menu
  3. Cliquez sur la case "Toujours Actualiser à Partir du Serveur"

Ou, pour le clavier-raccourci-philes (comme moi) y..

  • F12, Alt+C, Flèche Vers Le Bas, Alt+R.

NOTE DE PRUDENCE: Ceci dit... Garder à l'esprit que chaque fois que vous développer/tester d'une manière différente que le site sera affiché à la production, vous courez le risque d'obtenir des résultats mitigés. Un bon exemple est cette mise en cache question. Nous avons constaté un problème où IE a été mise en cache nos appels Ajax et pas de mise à jour des résultats à partir d'une méthode GET. Si l'on AVAIT désactivé le cache d'IE, nous aurions jamais vu ce problème dans le développement, et aurait déployé à la production de ce genre.

1voto

José Leal Points 2658

En javascript, je pense que ce n'est pas possible, car les navigateurs modernes ont une politique de sécurité des javascripts .. et vider le cache est une violation flagrante.

Vous pouvez essayer d'ajouter

 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
 

Dans votre en-tête, mais vous aurez une perte de performance.

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