Pourquoi mes utilisateurs ne voient-ils pas les dernières mises à jour lorsque je publie une nouvelle version de notre site Web?

Jeudi dernier, nous venons de publier une nouvelle version de notre site Web. Le grand changement a été que nous sums passés de Prototype à jQuery. Cela comprenait bien sûr de nombreuses modifications apscopes aux fichiers javascript référencés. Il y avait aussi de nouvelles modifications de fichiers CSS. Malheureusement, beaucoup de nos clients ne voient pas les changements. Un client a même effacé le cache de son navigateur, appuyé sur F5 et téléchargé directement le fichier js. Il recevait toujours l’ancienne version.

Quelles méthodes avons-nous pour informer tous les participants (navigateur, serveurs proxy, etc.) des modifications apscopes à nos fichiers?

BTW, beaucoup de nos clients sont des entresockets Fortune 500. Ils utilisent IE 6 et sont souvent derrière un serveur proxy.

Nous utilisons Tomcat 6 et Apache 2.

J’ai remarqué que StackOverflow utilise des numéros de version sur leurs fichiers

http://sstatic.net/so/js/question.js?v=5207 

J’ai donc essayé sur notre site et cela semble fonctionner. Le seul utilisateur ayant un navigateur particulièrement têtu a vu les résultats immédiatement après le changement.

Ce que j’aime, c’est que ce n’est vraiment pas difficile pour nous de l’implémenter et cela permet aux navigateurs et aux proxys de mettre en cache les fichiers qui ne changent pas beaucoup.

Pour Tomcat, lorsque vous déployez, assurez-vous de supprimer tout ce qui se trouve dans le répertoire work / Catalina / localhost avant de redémarrer. Ceci est un répertoire de cache pour Tomcat. L’ajout des en-têtes dans votre servlet / JSP comme indiqué par moi peut également être utile.

Si les serveurs proxy mettent en cache votre site, vous ne pouvez rien faire. Vous pouvez essayer d’append des en – têtes CACHE-CONTROL et PRAGMA: NO-CACHE à vos pages.

Vous devez également essayer de reproduire le problème avec le moins possible entre vous et le serveur. J’ai eu des problèmes avec Tomcat conservant des fichiers dans son cache de travail, alors assurez-vous de supprimer cela.

J’avais un problème similaire. À la fin, je l’ai “résolu” en envoyant des en-têtes http avec chaque page pour dire que le contenu avait expiré et forcer le renouvellement de la page. Pas une solution très élégante cependant.

En PHP, c’était:

 header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 

Je ne suis pas sûr pour Tomcat.