Bonjour
Quand un fichier "externe" (image, CSS ou JavaScript) se trouve dans le cache d'un navigateur alors que ce fichier a été modifié sur le site, il n'est pas évident de faire en sorte que ce fichier soit "oublié" par le cache.
Une des techniques consiste à faire des astuces du genre
Je trouve cette astuce un peu lourde, et je ne suis du reste pas sûr qu'elle fonctionne correctement sur tous les navigateurs, même si je l’utilise faute de mieux depuis des années.
Je retombe sur ce problème à l'occasion d'un programme JavaScript que je suis en train d'écrire et qui a pour but de modifier le contenu d'un fichier du serveur.
An gros, pour être clair:
1) J'ai un fichier "description.js' qui contient essentiellement quelque chose du genre:
2) au chargement de certaines pages, ce fichier est pris en compte et cet objet "DESCRIPTION" est utilisé pour la mise en page
3) le propriétaire du site n'est pas un technicien, et donc modifier manuellement les paramètre d'un objet JavaScript en tenant compte des protections de guillemets par des antislashes et autres joyeusetés techniques n'est pas sa tasse de thé (et j'avoue que moi même je trouve cela particulièrement pénible à faire).
4) j'ai donc développé un programme qui affiche le contenu des paramètres dans un formulaire; il suffit demodifier les paramètre et d'appuyer sur "Mise à jour" pour que le fichier soit mis à jour sur le serveur.
Tout cela marche bien, sauf que la première chose qu'on a envie de faire dans ces cas là, c'est de regarder le résultat des modifications qu'on vient de faire. Et là, on a l'impression qu'il ne s'est rien passé, parce que le navigateur trouve le fichier "description.js" dans son cache et ne le recharge pas.
Question: connaîtriez vous un moyen par JavaScript de dire au navigateur de supprimer ce fichier de son cache? Ou toute autre technique permettant d'arriver au même résultat?
Merci de votre aide
Modifié par PapyJP (03 Jan 2017 - 15:13)
Quand un fichier "externe" (image, CSS ou JavaScript) se trouve dans le cache d'un navigateur alors que ce fichier a été modifié sur le site, il n'est pas évident de faire en sorte que ce fichier soit "oublié" par le cache.
Une des techniques consiste à faire des astuces du genre
<img src="monimage.jpg?20170103145235">
, c'est à dire que le nom du fichier ne soit pas le nom du fichier, mais quelque chose qui contienne une partie inutile et ignorée du serveur, simplement pour que le navigateur ne le retrouve pas dans son cache.Je trouve cette astuce un peu lourde, et je ne suis du reste pas sûr qu'elle fonctionne correctement sur tous les navigateurs, même si je l’utilise faute de mieux depuis des années.
Je retombe sur ce problème à l'occasion d'un programme JavaScript que je suis en train d'écrire et qui a pour but de modifier le contenu d'un fichier du serveur.
An gros, pour être clair:
1) J'ai un fichier "description.js' qui contient essentiellement quelque chose du genre:
DESCRIPTION = {param1:valeur1, param2:valeur2, ...};
2) au chargement de certaines pages, ce fichier est pris en compte et cet objet "DESCRIPTION" est utilisé pour la mise en page
3) le propriétaire du site n'est pas un technicien, et donc modifier manuellement les paramètre d'un objet JavaScript en tenant compte des protections de guillemets par des antislashes et autres joyeusetés techniques n'est pas sa tasse de thé (et j'avoue que moi même je trouve cela particulièrement pénible à faire).
4) j'ai donc développé un programme qui affiche le contenu des paramètres dans un formulaire; il suffit demodifier les paramètre et d'appuyer sur "Mise à jour" pour que le fichier soit mis à jour sur le serveur.
Tout cela marche bien, sauf que la première chose qu'on a envie de faire dans ces cas là, c'est de regarder le résultat des modifications qu'on vient de faire. Et là, on a l'impression qu'il ne s'est rien passé, parce que le navigateur trouve le fichier "description.js" dans son cache et ne le recharge pas.
Question: connaîtriez vous un moyen par JavaScript de dire au navigateur de supprimer ce fichier de son cache? Ou toute autre technique permettant d'arriver au même résultat?
Merci de votre aide
Modifié par PapyJP (03 Jan 2017 - 15:13)