2010-09-09 4 views
2

J'ai un site ASP .NET avec un système de mise en cache côté serveur personnalisé qui est un cauchemar. Je veux utiliser eTags pour remplacer cela.eTag et de nombreuses versions de la page

De nombreux liens du site renvoient des versions différentes d'une page en fonction de l'état de la session de l'utilisateur. Un exemple - mypage.aspx? P = a retournera différentes versions de mypage - tout aussi valide, selon l'état de la session. Je voudrais mettre en cache toutes les versions. Sans refaire complètement la conception des liens de navigation, comment puis-je faire cela? D'après ce que j'ai lu, mettre un eTag différent sur chacun d'eux à mesure qu'ils sont générés et servis pour la première fois fera que la dernière version générée sera invalidée et supprimée du cache.

Merci

PS pourrais-je utiliser Response.Cache.VaryByHeaders [ "Content-Length"] = true et compter sur chaque version étant de longueur différente?

PPS Idée stupide! Qu'en est-il de l'ajout d'un en-tête personnalisé avec une clé de version à la réponse et utilisez VaryByHeaders à ce sujet.

Répondre

0

Le problème que vous avez avec les en-têtes personnalisés est que, sauf si l'objet à l'autre extrémité les comprend, ils ne seront pas réciproques. Donc, l'envoi d'en-têtes personnalisés à IE ne fera que l'ignorer.

Vous pouvez cependant utiliser la mise en cache de sortie. Il est possible de créer votre propre outputcacheprovider. Cela vous permettrait de jouer avec le cache en fonction de vos besoins.

Voir http://msdn.microsoft.com/en-us/library/hdxfb6cy(VS.90).aspx pour plus de détails sur la mise en cache de sortie.

Il semblerait que le fournisseur de sortiecache est seulement .Net 4

Questions connexes