有没有办法让OutputCache忽略asp.net mvc中的母版页?

问题描述:

我有一个操作,返回顶部带有登录用户控件的母版页视图。当我设置outputcache时,它会缓存包括当前用户在内的整个输出,因此每个人都会看到最后一个人点击页面来刷新当前用户的缓存。有没有办法阻止主页面被包含在缓存中?有没有办法让OutputCache忽略asp.net mvc中的母版页?

我使用以下代码:

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

看看这个链接: [ASP.NET MVC中的部分输出缓存](http://blog.codeville.net/2008/10/15/partial-output-caching-in-aspnet-mvc/ ) 希望这有助于。 – ali62b 2010-01-20 08:12:19

有一个“donut caching”的概念(不包括输出缓存中的页面部分),但它没有在asp.net MVC 1中创建它。要解决您的问题,您可以尝试this workaround

输出缓存与控制器,而不是视图相关联。控制器可以基于传递的参数返回不同的视图。缓存也可以通过参数来完成(就像你在例子中那样)。当缓存控制器的结果时,该缓存值是视图生成的html(包括主页面,如果有的话)。所以,简短的回答是,不,您无法从缓存中排除母版页。