2 votes

Effacer le cache de chrome côté serveur

J'ai un gros problème avec le cache de chrome. Je suis en train de construire un système pour mes clients. Tous sont construits sur angular donc au début il y a toujours un fichier index.html. Avec la nouvelle version, je change la balise scripts en ex. scripts.2.1.1.js dans le fichier index.html. J'ai aussi :

<FilesMatch "\.(html)$">
Header set Cache-Control "max-age=1, public"
</FilesMatch>

dans mon fichier htaccess.

Mais chrome semble l'ignorer. Chaque fois que je tape l'adresse url, j'ai l'ancienne version, mais dans le code source, j'ai des balises vers les nouveaux scripts. Lorsque j'appuie sur F5, la nouvelle version est chargée, mais lorsque je ferme l'onglet du navigateur et que je tape à nouveau l'url, j'ai à nouveau l'ancienne version ?

Qu'est-ce qui ne va pas ? Comment se débarrasser du cache ? Je ne veux pas d'une solution de navigateur (vider le cache). Je ne peux pas forcer mes clients à le faire. Je veux une solution côté serveur. Existe-t-il une solution ?

Solution :

<FilesMatch "\.(html|js|css)$">
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
</FilesMatch>

3voto

petit-pere Points 11

Vous pouvez essayer de définir "no-store" dans l'en-tête : Pourquoi faut-il utiliser à la fois no-cache et no-store dans la réponse HTTP ?

Mais l'implémentation des en-têtes ETag est un moyen plus robuste de le faire :

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en

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