【发布时间】:2012-09-13 12:26:39
【问题描述】:
我有一个名为“列表”的控制器/操作。该方法内置有属性
[OutputCache(Duration = 3600, VaryByParam = "*")]
这个动作有 3600 秒的缓存,因为从数据库加载数据并且它每 1 小时更改一次(更多/更少)。
它在 Layout.cshtml 上的问题,因为我的主布局(它的主页面),如果经过身份验证的用户或显示静态文本 User 当用户未通过身份验证时。请看下面的代码:
@Html.Raw(WebSecurity.IsAuthenticated ? WebSecurity.CurrentUserName : "User")
当任何人通过身份验证时,页面上第一次访问的名称缓存完成,然后所有用户,通过身份验证或未通过身份验证,请参见标题顶部栏上的第一个经过身份验证的用户的用户名。这很糟糕!
我以为不会做layout.cshtml缓存,只有来自Controller/Action指定的数据。
我该如何解决?
我不喜欢删除 OutputCache,因为它对我来说非常重要。标题顶部栏对所有用户都是通用的,因为它具有内置的布局页面。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 master-pages outputcache