我通过以下方式在我的自定义 HTTP 处理程序中使用输出缓存:
public void ProcessRequest(HttpContext context)
{
TimeSpan freshness = new TimeSpan(0, 0, 0, 60);
context.Response.Cache.SetExpires(DateTime.Now.Add(freshness));
context.Response.Cache.SetMaxAge(freshness);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
...
}
它可以工作,但问题是尽管有最后一个代码行,但使用 F5 刷新页面会导致页面重新生成(而不是缓存使用):
context.Response.Cache.SetValidUntilExpires(true);
有什么建议么?
UPD:似乎问题的原因是 HTTP 处理程序响应没有在服务器上缓存。以下代码适用于 web-form,但不适用于处理程序:
Response.Cache.SetCacheability(HttpCacheability.Server);
在服务器上缓存 http 处理程序响应是否有一些细节?