【问题标题】:Set cache-control for aspx pages为 aspx 页面设置缓存控制
【发布时间】:2013-07-03 16:46:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多