Salut, j'ai une application web en ligne faite en nodejs que je met régulièrement a jour sauf que l'utilisateur doit vider le cache pour que le site fonctionne !
Comment faire pour que lors du un update des fichiers le clients mettent a jour les fichier sans passer par le cache ?
Merci
L'invalidation de cache, c'est à la fois simple et complexe. Tu as plusieurs possibilités, voici quelques unes des plus simples :
- ajouter un timestamp dans les URL des scripts que tu charges (par exemple ./js/app.js?t=123456
)
- vérifier la configuration de ton serveur (apache ou nginx) pour corriger/définir une durée de vie pour tes fichiers, au-delà de laquelle le navigateur client ne pourra pas se baser sur le cache
- si tu passes par webpack pour ton application, tu peux générer des petits fichiers (des "chunks" dont le nom changera en fonction de tes builds et de leur stabilité - les parties de ton script qui ne bougent que peu souvent gardent des noms fixes, celles qui changent, elles, changent de nom)
Il y a pas mal de possibilités, mais ce n'est pas toujours facile. Comme le veut le vieil adage :
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
Merci pour ta réponse, alors oui j'utilise nginx mais un temps prédéfini ne m'intéresse pas en premier lieu car si je met 1 jours en gros pendant 1 jours l'application ne fonctionnera plus chez ceux qui s'y connaisse pas trop
Pour le timespan ça veut dire que tous les fichier JS modifie je leur rajoute/change une variable différente a chaque fois ? Ou bien c'est pareil c'est toutes les duree du timespan que le cache se videra
Je ne connaissais pas cette adage c'est dingue qu'en 2018 ils soit toujours d'actualités :p