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

发布于 2024-08-18 15:36:22 字数 291 浏览 8 评论 0 原文

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

我正在使用以下代码:

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

I have an action that returns a view with a master page with a logon user control at the top. When I set outputcache, it caches the entire output including the current user, so everybody would see whoever was the last person to hit the page to refresh the cache as the current user. Is there a way to prevent the master page from being included in the cache?

I am using the following code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤千羽 2024-08-25 15:36:22

有一个“甜甜圈缓存的概念”(从输出缓存中排除页面的一部分),但它没有在 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.

心欲静而疯不止 2024-08-25 15:36:22

输出缓存与控制器相关联,而不是与视图相关联。控制器可以根据传递的参数返回不同的视图。缓存也可以通过参数来完成(就像您在示例中所做的那样)。当控制器的结果被缓存时,缓存的值是视图生成的 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文