我有一个 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
也许我很久以前就做了一些事情来覆盖这个,但我不能,因为我一生都记得我是否做过以及做了什么。在搜索谷歌时没有找到任何相关信息让我觉得也许cache-control
对于 aspx 页面来说不是一个好主意...但我需要这个以便 Cloudfront(CDN)允许整个站点交付。
在 IIS 管道中的某个位置(我还没有找到在哪里),没有设置缓存标头。在我的母版页中,在设置我想要使用的缓存标头之前,我添加了以下代码Response.ClearHeaders();
这对于每个人来说可能不是一个好的解决方案,因为您可能已经在响应中包含了一些需要的标头,但就我而言,它成功了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)