Question

J'ai une question sur les techniques d'invalidation du cache ... J'essaie d'implémenter un mécanisme pour mon site Web, qui invalide automatiquement le cache du navigateur (css, images ...). Je veux pouvoir invalider par programme le cache du navigateur, chaque fois que je mets à jour le site Web (change les images ou les styles);

Par exemple: pour la version actuelle, entre autres, les fichiers CSS et certaines images ont été modifiés. Dans cette situation, je souhaite qu'après la mise à jour, lorsqu'un utilisateur adresse une requête au site Web, le cache de son navigateur soit automatiquement invalidé, ce qui oblige à télécharger à nouveau les nouveaux images et styles. Cela ne devrait être fait que lors de la première demande du client ... les suivantes doivent être récupérées dans le cache (la définition du pragma no-cache est donc hors de question).

Voici ce que j'ai essayé: dans le gestionnaire d'événements BeginRequest, j'ai ajouté les lignes suivantes:         Response.Cache.SetCacheability (HttpCacheability.ServerAndPrivate);     Response.Cache.SetETag ("" "e111293b17594f1487d136ea7e9314ac" ");

Ceci définit l'ETag dans les en-têtes de réponse. J'ai pensé que si je modifiais cet ETag à chaque publication et que je le définissais à chaque demande, le cache serait invalidé, mais il semble que ce ne soit pas le cas. J'ai utilisé les en-têtes Live HTTP pour voir les résultats et l'ETAG est correctement configuré pour la réponse, mais les fichiers css et les images sont toujours extraits du cache ....

Avez-vous une idée de la façon dont je pourrais accomplir cela ou si cela pourrait être accompli?

Merci d'avance!

Était-ce utile?

La solution

J'ai rencontré des problèmes comme celui-ci dans le passé. Malheureusement, je ne pouvais pas trouver un moyen vraiment agréable d'accomplir cela, alors j'ai dû trouver une solution de contournement. Je ne traitais que de ce problème pour les fichiers CSS, alors j’ai ajouté un paramètre supplémentaire à chaque chaîne CSS, par exemple

.
 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />

Le numéro de build est incrémenté à chaque version, ce qui oblige le navigateur à rechercher ce nouveau fichier. Pas une solution idéale, mais cela a fonctionné sans accroc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top