82 votes

La mise en cache dans asp.net-mvc

Je voudrais cache ma base de données de plus lourd des actions dans mon asp.net mvc site. Dans mes recherches, j'ai trouvé

Mais je ne sens pas l'obtenir encore.
Je veux être en mesure de cache ma requête POST en fonction de plusieurs pars. Ces pièces sont dans un objet. Donc, je tiens à mettre en cache le résultat de la requête suivante:

public ActionResult AdvancedSearch(SearchBag searchBag)

Où searchBag est un objet qui contient (un tas) de l'option paramètres de recherche. Mon point de vue sont eux-mêmes de la lumière (comme ils devraient l'être), mais l'accès aux données peut être assez longue, selon ce que les champs sont remplis dans la recherche de sac.

J'ai le sentiment que je devrais être mise en cache sur mon datalayer, plutôt que sur mes actions.
Comment suis-je censé utiliser le VaryByParam dans le OutputCache attribut?

74voto

Matthew Points 1907

J’aime à mettre en cache dans la couche données ou modèle aussi bien. Cela isole tout à voir avec la récupération des données depuis la contrôleur/présentation. Vous pouvez accéder à la cache d’ASP.NET de `` ou utiliser le bloc d’Application de la mise en cache de la bibliothèque de l’entreprise. Créez votre clé associée aux données mises en cache dans les paramètres de la requête. N’oubliez pas d’invalider le cache lorsque vous mettez à jour les données.

66voto

Andrei Rînea Points 7554

Ou vous pouvez être indépendant de la HttpContext.Current et accès Cache de HttpRuntime.Cache  :)

12voto

Haacked Points 31070

Souvent, le OutputCaching peut être le plus rapide et efficace, mais seulement quand il répond à vos exigences. Inutile d’avoir rapidement efficace si c’est faux ! ;)

Dans ce cas, il semble que la mise en cache au niveau de la couche de données est correct, parce que vous avez des besoins complexes de mise en cache. Parfois, vous pouvez combiner les deux, si l’ensemble des paramètres qui contrôlent ce que sortie est mise en cache est simple.

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