【问题标题】:last-modified vs expires precedence最后修改 vs 过期优先级
【发布时间】:2015-08-20 02:45:39
【问题描述】:

我已经阅读了很多讨论,发现大多数声称expires 的优先级高于last-modified,这意味着如果response 已经过期,它甚至不会将if-modified-since 发送到服务器并且当然response 代码不会是 304。

但我的情况很奇怪,我在response 中返回了last-modified,并且不知何故CDN/代理端添加了expires 标头,该值与date response 标头相同,我想expiresdate 标头中的相同值将立即导致 response 陈旧,但实际上,我的客户端浏览器仍会发送带有 if-modified-since 标头的请求,这将导致从返回的 304 response 代码服务器。

我通读了RFC 2616,它并没有说明太多。那么这个案子怎么办呢?

【问题讨论】:

    标签: http web httprequest httpresponse


    【解决方案1】:

    快 2 年了,但没有找到答案……

    我设法找到了一些reference

    新鲜度生命周期是根据多个标头计算的。如果一个 指定"Cache-control: max-age=N" 头,那么新鲜度 生命周期等于 N。如果此标头不存在,则非常 通常情况下,会检查是否存在 Expires 标头。如果 Expires 标头存在,则其值减去 Date 的值 标头决定了新鲜度寿命。最后,如果两个标题都没有 存在,查找 Last-Modified 标头。如果这个标题是 存在,则缓存的新鲜度生命周期等于 Date 标头减去 Last-modified 标头的值除以 10.

    虽然我在 RFC 中找不到确认的优先级,但我认为这个 MDN 引用已经足够可靠了。

    如果某些浏览器没有以这种方式实现是很正常的......所以为了避免任何问题,最好不要在响应中同时返回这两个标头。

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 2016-10-24
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多