【发布时间】:2015-04-04 23:19:33
【问题描述】:
如果 HTTP 响应中没有与缓存过期相关的标头(Date、Last-Modified 和 ETag 除外),如果其 Content-Type 是 text/html,那么资源的过期期限是多少?
是否依赖于浏览器?
【问题讨论】:
如果 HTTP 响应中没有与缓存过期相关的标头(Date、Last-Modified 和 ETag 除外),如果其 Content-Type 是 text/html,那么资源的过期期限是多少?
是否依赖于浏览器?
【问题讨论】:
来自HTTP/1.1 specification on Response Cacheability:
如果既没有缓存验证器也没有与响应关联的明确过期时间,我们不希望它被缓存,但某些缓存可能会违反此预期(例如,当网络连接很少或没有可用时)。
这是理论,但我没有关于实际行为的任何信息。
【讨论】:
我有理由相信这在很大程度上取决于浏览器。他们试图在“除非我们必须这样做,否则不要每次都请求相同的 HTML 文件”和“如果网站管理员不称职,不要错过更新”之间找到平衡点。在过去,空间也是一个问题,所以用户会玩弄一个小滑块来设置缓存使用率——如果你能把它一直设置到 500MB,那你就是一个幸运的人!
现在几乎所有东西都没有缓存或过期:无论如何都是-1(生成的页面)。但除此之外,我确信旧的准则会适用。
我一直将缓存标头视为一种肯定的声明 - 无论多长时间,此响应都是有效的,或者仅有效一次。但无论哪种方式,它都是定义的。如果它未定义,我不相信它会被清除。
【讨论】: