【问题标题】:Default browser cache expiration period for text/htmltext/html 的默认浏览器缓存有效期
【发布时间】:2015-04-04 23:19:33
【问题描述】:

如果 HTTP 响应中没有与缓存过期相关的标头(DateLast-ModifiedETag 除外),如果其 Content-Type 是 text/html,那么资源的过期期限是多少?

是否依赖于浏览器?

【问题讨论】:

    标签: http caching


    【解决方案1】:

    来自HTTP/1.1 specification on Response Cacheability

    如果既没有缓存验证器也没有与响应关联的明确过期时间,我们不希望它被缓存,但某些缓存可能会违反此预期(例如,当网络连接很少或没有可用时)。

    这是理论,但我没有关于实际行为的任何信息。

    【讨论】:

    • 我认为在这种情况下,电子标签标头是一个缓存验证器。我知道 IE、Firefox 和 Chrome 正在缓存这个。只是想知道超时是多少,以便我可以将缓存控制 HTTP-EQUIV 元标记添加到页面中,并且知道对于那些已经缓存页面的访问者,缓存不会需要很长时间才能过期。
    • @axk:是的,ETag 是一个缓存验证器。但正如我所说,如果没有明确的到期时间,我不知道浏览器如何处理缓存。
    【解决方案2】:

    我有理由相信这在很大程度上取决于浏览器。他们试图在“除非我们必须这样做,否则不要每次都请求相同的 HTML 文件”和“如果网站管理员不称职,不要错过更新”之间找到平衡点。在过去,空间也是一个问题,所以用户会玩弄一个小滑块来设置缓存使用率——如果你能把它一直设置到 500MB,那你就是一个幸运的人!

    现在几乎所有东西都没有缓存或过期:无论如何都是-1(生成的页面)。但除此之外,我确信旧的准则会适用。

    我一直将缓存标头视为一种肯定的声明 - 无论多长时间,此响应都是有效的,或者仅有效一次。但无论哪种方式,它都是定义的。如果它未定义,我不相信它会被清除。

    【讨论】:

    • "他们试图在“除非我们必须每次都不要请求相同的 HTML 文件”和“如果网站管理员无能也不要错过更新”之间找到平衡点.如果浏览器必须猜测,这会牺牲正确性。不应该牺牲正确性。
    猜你喜欢
    • 2017-09-18
    • 2017-01-01
    • 2020-05-05
    • 2019-10-06
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多