【问题标题】:Cache-control Immutable Header缓存控制不可变标头
【发布时间】:2020-07-17 21:09:02
【问题描述】:

我正在阅读有关不可变标头的内容,并且看到这篇文章说:

缓存控制:max-age=365000000,不可变

当支持不可变的客户端看到这个属性时,它应该 假设资源(如果未过期)在服务器上未更改,并且 因此不应为其发送有条件的重新验证(例如 If-None-Match 或 If-Modified-Since)检查更新。纠正 可能的损坏(例如 Firefox 中的 shift reload)从不使用 有条件的重新验证,并且对于不可变仍然有意义 对象,如果您担心它们已损坏。

source

我无法理解这句话“如果未过期,则在服务器上未更改,因此不应发送有条件的重新验证”

客户端,默认情况下在 max-age 到期之前不会发送重新验证。

那么首先定义不可变有什么意义呢?

【问题讨论】:

    标签: caching header http-headers cache-control


    【解决方案1】:

    人们按下刷新按钮。

    首先提出这个不可变缓存控制指令的 Facebook 有一个 good post on this,关于它如何为他们节省了大量的请求,包括以下引用:

    重载问题

    浏览器的重新加载按钮允许用户获得更新 当前页面的版本。为了实现这个目标,当你 重新加载,浏览器重新验证您当前所在的页面,甚至 如果该页面尚未过期。然而,他们也更进一步 并重新验证页面上的所有子资源——比如图像和 JavaScript 文件。

    【讨论】:

    • 当我重新加载我的页面时,请求会命中缓存,因为它还没有过期。所以没有重新验证发生,这就是我不理解不可变的原因。
    • 取决于浏览器和确切的刷新方法。在火狐上试一试。在 Facebook 上,它们在使用时从缓存中使用。其他网站在刷新时会出现 304。
    猜你喜欢
    • 2011-01-13
    • 2016-04-26
    • 1970-01-01
    • 2020-10-03
    • 2017-01-10
    • 2011-10-28
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多