有没有一种简单的方法来仅为匿名用户缓存 ASP.NET 整个页面(使用表单身份验证)?
上下文:我正在制作一个网站,其中向匿名用户显示的页面大多是完全静态的,但向登录用户显示的相同页面则不是。
当然,我可以通过后面的代码手动完成此操作,但我认为可能有更好/更简单/更快的方法。
我正在使用 asp.net MVC,所以我在控制器中执行了此操作
if (User.Identity.IsAuthenticated) {
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
}
else {
Response.Cache.VaryByParams["id"] = true; // this is a details page
Response.Cache.SetVaryByCustom("username"); // see global.asax.cs GetVaryByCustomString()
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
}
我这样做的原因(而不是声明式)是我还需要能够通过配置打开和关闭它(此处未显示,但在我的配置变量的 if 中有一个额外的检查)。
您仍然需要根据用户名进行更改,否则当出现登录用户时您将不会执行此代码。我的 GetVaryByCustomString 函数在未经身份验证时返回“匿名”,或者在可用时返回用户名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)