Une réinitialisation IIS forcera-t-elle le renvoi des éléments mis en cache?

10

J'essaie de développer une stratégie pour gérer les fichiers javascript mis en cache, css, images, etc. lorsque nous publions une mise à jour sur notre site. Avant de commencer à implémenter les numéros de version sur les fichiers javascript, je me demandais si une réinitialisation IIS après chaque version entraînerait effectivement le renvoi des fichiers mis en cache.

DaveK
la source

Réponses:

8

Lorsque vous effectuez une réinitialisation IIS, le cache IIS sera effacé, puis commencera à être reconstruit après avoir redémarré à mesure que les demandes des clients arrivent. Si vous mettez à jour un fichier, l'ancien fichier mis en cache deviendra périmé et IIS servira le fichier mis à jour et mettre à jour le cache avec le nouveau fichier.

IISReset (bien que sévère) effacera le cache IIS mais ne fera rien avec les caches locaux dans les proxys ou les clients. Peut-être que vous venez de mélanger un peu la terminologie, mais il n'y a pas de concept de "ressentiment" en ce qui concerne la mise en cache. Tout est basé sur la demande. Si un client demande quelque chose et qu'il est trouvé dans un cache, il sera servi à partir du cache. Vous devrez forcer l'expiration du contenu sur vos fichiers si vous conservez les mêmes noms de fichiers.

squillman
la source
Merci pour l'aide. Veuillez pardonner mon ignorance dans ce domaine ... Je m'embrouille entre le client et le cache IIS. Le terme «renvoyé» faisait référence au serveur envoyant le contenu au lieu d'être extrait du cache du client.
DaveK
@Ne vous inquiétez pas du tout, heureux que cela ait aidé! Un bit supplémentaire, si un fichier se trouve dans un cache client ou un cache proxy en amont, le serveur ne recevra même pas la demande à moins que l'élément mis en cache ne soit périmé et qu'une version plus récente soit disponible auprès du serveur.
squillman
3

Non, la mise en cache du client est basée sur le délai d'expiration du contenu.

Jim B
la source
3

Lorsque vous modifiez un fichier javascript, vous avez besoin de TOUS les clients qui exécutent l'application Web pour obtenir le nouveau fichier, il est clair pour moi le "récent".

Pour que chaque client obtienne du serveur le nouveau fichier, il vous suffit d'inclure dans l'inclusion / script de votre javascript dans la page Web le "?version=1".

Il est seulement nécessaire qu'un paramètre soit ?blue=helloou ?v=1234155c'est comme vous le souhaitez. L'importance est d'utiliser une valeur différente à chaque fois que vous modifiez le javascript. "?version=1"pour le premier changement, "?version=2"pour le deuxième changement, il est pratique et unique de connaître la valeur suivante. Vous pouvez également utiliser un GUID si vous le souhaitez: "?version=4747b320-62ce-11cf-a5d6-28db04c10777"ou vous pouvez utiliser la date et l'heure "?version=20130220175025"pour 2013/02/20 17:50:25.

Exemple 1

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?version=1"></script>

Exemple # 2

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?k=4747b320-62ce-11cf-a5d6-28db04c10777"></script>
Edward López Garbanzo
la source