143 votes

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

J'ai un html simple :

 <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 modifié une fonction Javascript, mais mon navigateur met ce fichier en cache. Comment désactiver le cache pour le script src ?

51voto

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

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

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

16voto

Quentin Points 325526

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

Faux en-têtes dans les documents HTML :

  1. Ne sont pas aussi bien pris en charge que les vrais en-têtes HTTP
  2. Appliquer au document HTML, pas aux ressources auxquelles il renvoie

15voto

daveoncode Points 4453

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

9voto

Baszz Points 5779

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.

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