我有一个asp.net网站,我希望客户端浏览器一旦获得它们就缓存aspx页面的HTML输出。
从阅读中我发现IIS7不支持这种开箱即用的功能,因此我将以下代码添加到主母版页的OnLoad
事件中:
protected override void OnLoad(EventArgs e) {
DateTime dt = DateTime.Now.AddDays(10);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(dt);
Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks));
base.OnLoad(e);
}
有了这个,我仍然在响应头中得到以下内容:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Date: Fri, 05 Jul 2013 14:25:03 GMT
Content-Length: 10201
也许我很久以前做了一些事情来覆盖这个,但我不能,因为我的生活记得我是做什么的。在搜索Google时没有找到任何有关此信息的信息让我觉得对于aspx页面来说cache-control
可能不是一个好主意......但我需要这个才能让cloudfront(CDN)允许整个站点交付。
答案 0 :(得分:0)
在IIS管道中的某个地方(我还没找到位置),没有设置缓存头。在我的母版页中,在设置我想要使用的缓存标头之前,我添加了以下代码Response.ClearHeaders();
这对每个人来说可能都不是一个好的解决方案,因为您可能已经在响应中有了一些标题,但是我的情况就是这个伎俩。