53 votes

Effacer le cache des pages en ASP.NET

Pour mon blog, je veux utiliser le cache de sortie pour sauvegarder une version en cache d'un article particulier pendant environ 10 minutes, et c'est bien...

<%@OutputCache Duration="600" VaryByParam="*" %>

Cependant, si quelqu'un publie un commentaire, je veux vider le cache pour que la page soit rafraîchie et que le commentaire soit visible.

Comment puis-je faire cela en ASP.Net C# ?

1voto

Brian Scott Points 5422

Pourquoi ne pas utiliser la dépendance sqlcache sur la table posts ?

dépendance sqlcache msdn

De cette façon, vous n'implémentez pas de code personnalisé pour vider le cache et vous rafraîchissez simplement le cache lorsque le contenu change dans la base de données ?

1voto

John Christensen Points 3390

Hmm. Vous pouvez spécifier un attribut VaryByCustom sur l'élément OutputCache. La valeur de cet attribut est transmise comme paramètre à la méthode GetVaryByCustomString que vous pouvez implémenter dans global.asax. La valeur renvoyée par cette méthode est utilisée comme un index dans les éléments mis en cache - si vous renvoyez le nombre de commentaires sur la page, par exemple, chaque fois qu'un commentaire est ajouté, une nouvelle page sera mise en cache.

Le problème est que cela n'efface pas réellement le cache. Si un article de blog fait l'objet d'une forte utilisation de commentaires, la taille de votre cache pourrait exploser avec cette méthode.

Vous pourriez également mettre en œuvre les éléments non modifiables de la page (la navigation, les publicités, l'article de blog proprement dit) en tant que contrôles utilisateur et mettre en œuvre une mise en cache partielle de la page sur chacun de ces contrôles utilisateur.

-1voto

Julien Points 63

HttpRuntime.Close() .. J'ai essayé toutes les méthodes et c'est la seule qui fonctionne pour moi.

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