我正在研究缓存失效机制,遇到了 HttpValidationStatus.IgnoreThisRequest。
我了解,当指定此项时,ASP.Net 会将响应视为缓存未命中。
另一点是此响应中收到的动态值不会替换现有缓存,因此后续请求将使用已缓存的结果。
- 这样的机制有什么用?
- 为什么有人想要使用已经缓存的结果,即使有了最新的结果?
使用 HttpValidationStatus.IgnoreThisRequest。适用于您不想仅为该请求显示缓存页面的情况。
例子:
public void Page_Load()
{
Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCache), null);
}
public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status)
{
validationstatus = context.Request.IsAuthenticated ? HttpValidationStatus.IgnoreThisRequest : HttpValidationStatus.Valid;
}
在这种情况下,我想为除登录用户之外的所有人提供缓存页面。
考虑一个 cms:我可能希望编辑器看到刚刚编辑的页面,而不是缓存的页面。