这个方法是否按照它所说的去做(防止页面被缓存)
本文关键字:缓存 是否 方法 | 更新日期: 2023-09-27 18:19:07
private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
}
我问的原因是我最初在自定义AuthorizeAttribute
中有以下代码:
private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
cachePolicy.AddValidationCallback(CacheValidateHandler, null);
}
protected void CacheValidateHandler(
HttpContext context, object data, ref HttpValidationStatus validationStatus)
{
//todo validationStatus = OnCacheAuthorization(new HttpContextWrapper(context));
}
我基本上粘贴了这段代码从回答StackOverflow前一段时间,我已经把这个逻辑移动到IAuthorizationFilter
。
问题是,通过切换到接口,我丢失了AuthorizeAttribute
对OnCacheAuthorization
的实现。根据文档,OnCacheAuthorization
"在缓存模块请求授权时被调用"。这并没有真正告诉我需要做什么来实现这个方法,或者我是否首先需要回调。
-
PreventPageFromBeingCached
实际上会阻止页面被缓存只有两行代码,还是我还需要包括cachePolicy.AddValidationCallback(CacheValidateHandler, null);
和CacheValidateHandler()
方法(加上OnCacheAuthorization()
的实现)? - 如果我需要额外的代码,它到底是做什么的?
- 如果我都错了,我如何防止页面被缓存?
就我个人而言,我喜欢我在这里指定的控制器方法
你没有你所关心的最好的问题,我已经能够告诉通过使用这个在我的应用程序,因为你正在使用客户端缓存。