这个方法是否按照它所说的去做(防止页面被缓存)

本文关键字:缓存 是否 方法 | 更新日期: 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

问题是,通过切换到接口,我丢失了AuthorizeAttributeOnCacheAuthorization的实现。根据文档,OnCacheAuthorization"在缓存模块请求授权时被调用"。这并没有真正告诉我需要做什么来实现这个方法,或者我是否首先需要回调。

  1. PreventPageFromBeingCached实际上会阻止页面被缓存只有两行代码,还是我还需要包括cachePolicy.AddValidationCallback(CacheValidateHandler, null);CacheValidateHandler()方法(加上OnCacheAuthorization()的实现)?
  2. 如果我需要额外的代码,它到底是做什么的?
  3. 如果我都错了,我如何防止页面被缓存?

这个方法是否按照它所说的去做(防止页面被缓存)

就我个人而言,我喜欢我在这里指定的控制器方法

你没有你所关心的最好的问题,我已经能够告诉通过使用这个在我的应用程序,因为你正在使用客户端缓存。