46 votes

Comment "invalider" des parties du cache de sortie d'ASP.NET MVC ?

Existe-t-il un moyen d'invalider de manière programmatique des parties du cache de sortie d'ASP.NET MVC ? Ce que j'aimerais pouvoir faire, c'est, si un utilisateur publie des données qui modifient ce qui serait renvoyé par une action mise en cache, être capable d'invalider ces données mises en cache.

Est-ce que c'est possible ?

Merci, Matthew

39voto

sirrocco Points 4153

L'un des moyens consiste à utiliser la méthode :

HttpResponse.RemoveOutputCacheItem("/Home/About");

Une autre méthode est décrite ici : http://aspalliance.com/668

Je pense que vous pourriez mettre en œuvre la deuxième méthode en utilisant un attribut de niveau méthode pour chaque action que vous souhaitez et en y ajoutant simplement la chaîne représentant la clé. C'est si j'ai bien compris votre question.

Edit : Oui, l'OutputCache d'asp.net mvc est juste une enveloppe.

Si vous utilisez varyByParam="none" alors vous invalidez juste "/Statistics" - c'est si <id1>/<id2> sont des valeurs de chaîne de requête. Cela invalidera toutes les versions de la page.

J'ai fait un test rapide et si vous ajoutez varyByParam="id1" et ensuite créer plusieurs versions de la page - si vous dites invalider invalider invalider "/Statistics/id1" cela invalidera uniquement cette version. Mais vous devriez faire d'autres tests.

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