仅为未经身份验证的用户缓存内容

Kje*_*sen 5 asp.net-mvc caching

对于网站,我想仅为未经过身份验证的用户缓存页面 - 经过身份验证的用户不会获得缓存内容(因为他们将更新并需要立即查看结果).

我知道如何使用VaryByCustom改变每个用户的缓存: Link1 Link2

...但我无法弄清楚如何完全关闭经过身份验证的用户的缓存.

该怎么办?

编辑

如果已经有未经身份验证的用户的页面缓存版本,则下面的代码存在问题.基本上,经过身份验证的用户将获得未经身份验证的事物视图.

但是,这里的链接有解决方案:Link

sma*_*man 5

将其用作全局操作过滤器.

public class NoCacheForAuthenticatedUsersAttribute: ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        if(filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)