50 votes

Quand le navigateur efface-t-il automatiquement le cache JavaScript?

J'ai un JavaScript ressource qui a la possibilité d'être modifiés à tout moment. Une fois qu'il est modifié je voudrais être propagé au navigateur de l'utilisateur relativement rapidement (comme peut-être 15 minutes), cependant, la fréquence de cette ressource qui est en cours d'édition est peu et loin entre les deux (peut-être 2 mois).

Je préfère les ressources mises en cache dans le navigateur, car il sera récupéré fréquemment, mais je voudrais aussi le cache pour obtenir la réinitialisation du navigateur à un demi-intervalle régulier.

Je sais que je peux passer un no-cache-tête lorsque je demande de la ressource, mais je me demandais quand le cache est automatiquement réinitialisée sur le navigateur si je ne passe pas à no-cache.

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

J'ai essayé de Google, mais la plupart des hits que j'ai trouvées étaient sur l'effacement du cache du navigateur... ce qui n'est pas ce que je cherche.

53voto

aemkei Points 4602

Vous pouvez transmettre une chaîne de version en tant que 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 attribuer 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 de subversion:

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

14voto

Craig Points 15049

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

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

Ils auront alors toujours une nouvelle version.

13voto

acrosman Points 7688

HTTP fournit plusieurs options de mise en cache par les navigateurs ignorer de différentes manières. Si vous définissez une raisonnable de la date d'expiration, la plupart des navigateurs va vérifier pour voir si ils ont la version actuelle sont les fréquences appropriées.

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

Pour plus d'informations, voir:

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