web-dev-qa-db-fra.com

Quand le navigateur vide-t-il automatiquement le cache du fichier JavaScript externe?

J'ai une ressource JavaScript qui peut être modifiée à tout moment. Une fois édité, je souhaiterais qu'il soit propagé au navigateur de l'utilisateur relativement rapidement (comme peut-être 15 minutes environ), cependant, la fréquence de modification de cette ressource est rare (peut-être 2 par mois).

Je préfère que la ressource soit mise en cache dans le navigateur, car elle sera récupérée fréquemment, mais j'aimerais également que le cache soit réinitialisé sur le navigateur à un intervalle semi-régulier.

Je sais que je peux passer un en-tête sans cache lorsque je demande la ressource, mais je me demandais quand le cache se réinitialiserait automatiquement sur le navigateur si je ne passais pas sans cache.

J'imagine que ce serait indépendant pour chaque navigateur, mais je ne suis pas sûr.

J'ai essayé de Google, mais la plupart des hits que j'ai trouvés concernaient la suppression du cache du navigateur ... ce qui n'est pas ce que je recherche.

50
Elijah Manor

Vous pouvez passer une chaîne de version comme paramètre get à l'URL de votre balise de script. Le paramètre ne sera pas évalué par le fichier JavaScript statique mais forcera le navigateur à obtenir la nouvelle version.

Si vous ne souhaitez pas affecter la chaîne de version à chaque fois que vous modifiez la source, vous pouvez la calculer en fonction de l'horodatage du système de fichiers ou de votre numéro de validation Subversion:

<script src="/script.js?time_stamp=1224147832156" type="text/javascript"></script>
<script src="/script.js?svn_version=678" type="text/javascript"></script>

53
aemkei

Mettez une version de votre code javascript comme celle-ci qui est mise à jour lorsque vous effectuez une modification

<script src="/code.js?ver=123" type="text/javascript"></script>

Ils recevront alors toujours une nouvelle version.

14
Craig

HTTP fournit plusieurs contrôles de mise en cache que les navigateurs ignorent de différentes manières. Si vous définissez une date d'expiration raisonnable, la plupart des navigateurs vérifieront s'ils ont la version actuelle des fréquences appropriées.

Le terme de recherche que vous souhaitez inclure ici (pour éviter les instructions utilisateur du navigateur) est HTTP.

Pour plus d'informations, voir:

13
acrosman