2010-01-20 10 views
4

J'ai une action qui renvoie une vue avec une page maître avec un contrôle d'utilisateur d'ouverture de session en haut. Lorsque je place outputcache, il met en cache l'ensemble de la sortie, y compris l'utilisateur actuel, de sorte que tout le monde verrait qui était la dernière personne à frapper la page pour actualiser le cache en tant qu'utilisateur actuel. Est-il possible d'empêcher l'inclusion de la page maître dans le cache?Existe-t-il un moyen pour que OutputCache ignore la page maître dans asp.net mvc?

J'utilise le code suivant:

[OutputCache(Duration=3000, VaryByParam={params})] 
public ActionResult {actionName}({params}) 
{ 
    {codeGoesHere} 
} 
+0

Jetez un coup d'œil à ce lien: [Mise en mémoire cache partielle dans ASP.NET MVC] (http://blog.codeville.net/2008/10/15/partial-output-caching-in-aspnet-mvc/ Espérons que cela aide. – ali62b

Répondre

1

Il y avait un concept de "donut caching" (à l'exclusion des parties d'une page du cache de sortie) mais il ne l'a pas fait dans asp.net MVC 1. Pour la solution à votre problème, vous pouvez essayer this workaround.

1

cache de sortie est associé au contrôleur, pas la vue. Un contrôleur peut renvoyer des vues différentes, en fonction des paramètres transmis. La mise en cache peut également être effectuée par des paramètres (comme dans votre exemple). Lorsque le résultat d'un contrôleur est mis en cache, cette valeur mise en cache est le code HTML généré par la vue (y compris la page maître, le cas échéant). Donc, la réponse courte est, non, vous ne pouvez pas exclure la page maître du cache.