为aspx页面设置缓存控制

时间:2013-07-05 14:32:32

标签: asp.net iis-7 http-headers

我有一个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)允许整个站点交付。

1 个答案:

答案 0 :(得分:0)

在IIS管道中的某个地方(我还没找到位置),没有设置缓存头。在我的母版页中,在设置我想要使用的缓存标头之前,我添加了以下代码Response.ClearHeaders();这对每个人来说可能都不是一个好的解决方案,因为您可能已经在响应中有了一些标题,但是我的情况就是这个伎俩。