有没有办法让OutputCache忽略asp.net mvc中的母版页?
我有一个操作返回一个带有母版页的视图,顶部有登录用户控件。当我设置outputcache时,它会缓存包括当前用户在内的整个输出,因此每个人都会以当前用户的身份看到最后一个点击页面刷新缓存的人。有没有办法防止母版页被包含在缓存中?
我正在使用以下代码:
[OutputCache(Duration=3000, VaryByParam={params})]
public ActionResult {actionName}({params})
{
{codeGoesHere}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一个“甜甜圈缓存的概念”(从输出缓存中排除页面的一部分),但它没有在 asp.net MVC 1 中出现。要解决您的问题,您可以尝试 此解决方法。
There was a concept of "donut caching" (excluding parts of a page from the output cache) but it didn't made it in asp.net MVC 1. For solution to your problem you can try this workaround.
输出缓存与控制器相关联,而不是与视图相关联。控制器可以根据传递的参数返回不同的视图。缓存也可以通过参数来完成(就像您在示例中所做的那样)。当控制器的结果被缓存时,缓存的值是视图生成的 html(包括母版页,如果有的话)。因此,简短的回答是,不,您不能将母版页从缓存中排除。
Output cache is associated with the controller, not the view. A controller may return different views, based on the passed parameters. Caching may also be done by parameters (like you have in your example). When the result of a controller is cached, that cached value is the view's generated html (including the master page if any). So, the short answer is, no, you can't exclude the master page from the cache.