【问题标题】:ASP.NET MVC: OutputCache and http headersASP.NET MVC:OutputCache 和 http 标头
【发布时间】:2010-11-11 06:30:24
【问题描述】:

我刚刚开始在我的一些控制器操作上使用 OutputCache,但我并没有完全得到预期的响应。

我已将缓存时间设置为 5 分钟,并且 Expires 标头与 Last-Modified 标头相同,即发出请求的时间。

这是我目前得到的标题:

Date                    Thu, 16 Jul 2009 06:35:07 GMT
Server                  Microsoft-IIS/6.0
X-Powered-By            ASP.NET
X-AspNet-Version        2.0.50727
X-AspNetMvc-Version     1.0
Content-Encoding        gzip
Cache-Control           public, max-age=300
Expires                 Thu, 16 Jul 2009 06:35:06 GMT
Last-Modified           Thu, 16 Jul 2009 06:35:03 GMT
Vary                    *
Content-Type            text/html; charset=utf-8
Content-Length          575

这是我期望的标题:

Date                    Thu, 16 Jul 2009 06:35:07 GMT
Server                  Microsoft-IIS/6.0
X-Powered-By            ASP.NET
X-AspNet-Version        2.0.50727
X-AspNetMvc-Version     1.0
Content-Encoding        gzip
Cache-Control           public, max-age=300
Expires                 Thu, 16 Jul 2009 06:40:06 GMT
Last-Modified           Thu, 16 Jul 2009 06:35:03 GMT
Vary                    *
Content-Type            text/html; charset=utf-8
Content-Length          575

对为什么会这样做有什么想法吗?

干杯 安东尼

【问题讨论】:

    标签: .net asp.net asp.net-mvc caching http-headers


    【解决方案1】:

    max-age 优先(来自RFC 2616):

    我们使用术语expires_value 来表示 表示 Expires 的值 标题。我们用这个词 max_age_value 表示一个 数量的适当值 “max-age”携带的秒数 Cache-Control 标头的指令 在响应中(参见第 14.9.3 节)。

    max-age 指令优先 over Expires,所以如果 max-age 存在 作为回应,计算是 简单地说:

      freshness_lifetime = max_age_value 
    

    否则,如果 Expires 是 在响应中, 计算是:

      freshness_lifetime = expires_value - date_value
    

    所以客户端应该按照你的预期使用缓存版本。

    【讨论】:

    • 嗯这仅适用于 HTTP/1.1 吗?因为我使用的代理显然只支持 HTTP/1.0。那么这仍然适用吗?
    • 代理支持的内容与代理对内容的处理方式不同。发送的标头取决于输出缓存属性中指定的缓存位置。
    • 在 HTTP/1.1 中引入了 Cache-Control 标头来处理 Expires 标头中的限制。问题是 Expires 标头设置了一个固定的到期日期,如果客户端和服务器时钟不同步,这可能会导致问题。当使用支持 HTTP/1.1 的浏览器(几乎所有浏览器)时,Expires 标头会被忽略,取而代之的是 Cache-Control - max-age 标头。唯一使用 Expires 标头的情况是请求来自仅支持 HTTP/1.0 而不是 HTTP/1.1 的浏览器。
    猜你喜欢
    • 2011-06-08
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多