Comment empêcher la mise en cache de mon fichier Javascript?

J'ai un simple html:

<html> <body> <head> <meta charset="utf-8"> <meta http-equiv='cache-control' content='no-cache'> <meta http-equiv='expires' content='0'> <meta http-equiv='pragma' content='no-cache'> <script src="test.js"></script> </body> </html> 

Dans test.js j'ai changé une fonction Javascript, mais mon navigateur met en cache ce fichier. Comment désactiver le cache pour le script src?

Mise à jour: comment ajouter un script aléatoire à l'aide de javascript?

Ajouter une chaîne de requête aléatoire à la src

Vous pouvez soit le faire manuellement en incrémentant la chaîne automatique chaque fois que vous effectuez une modification:

 <script src="test.js?version=1"></script> 

Ou si vous utilisez une langue côté serveur, vous pouvez générer automatiquement ceci:

ASP.NET:

 <script src="test.js?rndstr=<%= getRandomStr() %>"></script> 

Vous trouverez plus d'informations sur le cache-busting ici:

http://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/

 <script src="test.js?random=<?php echo uniqid(); ?>"></script> 

EDIT: Ou vous pouvez utiliser l'heure de modification du fichier afin qu'il soit mis en cache sur le client.

 <script src="test.js?random=<?php echo filemtime('test.js'); ?>"></script> 

Configurez votre serveur Web pour envoyer des en-têtes HTTP de contrôle de mise en cache pour le script.

En-têtes faux dans les documents HTML:

  1. Ne sont pas aussi bien pris en charge que les en-têtes HTTP réels
  2. Appliquer au document HTML, et non aux ressources auxquelles il est lié.

Vous pouvez ajouter un queryString à votre src et le modifier uniquement lorsque vous publierez une version mise à jour:

 <script src="test.js?v=1"></script> 

De cette façon, le navigateur utilisera la version mise en cache jusqu'à ce qu'une nouvelle version soit spécifiée (v = 2, v = 3 …)

Vous pouvez ajouter une chaîne aléatoire (ou datetime) comme chaîne de requête à l'URL qui pointe vers votre script. Ainsi:

 <script type="text/javascript" src="test.js?q=123"></script> 

Chaque fois que vous actualisez la page, vous devez vous assurer que la valeur de 'q' est modifiée.