0

我有一个 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 时没有找到任何关于此的信息让我认为cache-control对于 aspx 页面可能不是一个好主意......但我需要这个以便云端(CDN)允许整个站点交付。

4

1 回答 1

0

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

于 2013-07-07T13:02:22.380 回答