如果我不做任何具体操作,缓存的 CSS 文件会在浏览器中更新多久?
我用谷歌搜索了这个,但没有找到明确的答案。我知道我可以使用
file.css?v=1
强制浏览器加载更新版本,或者我可以使用浏览器的硬重新加载功能。但如果我不做所有这些怎么办?到目前为止,浏览器将始终加载缓存的旧版本。
如果服务器中没有硬重新加载和任何其他设置,本地浏览器将更新缓存的 CSS 文件需要多长时间?缓存的版本会永远保留在那里吗? (除非缓存空间满了才能腾出空间).
浏览器通常遵循 IETF 的 HTTP 缓存规范。这是在 HTTP 1.1 规范中引入的。但如果所提供的内容不使用 HTTP Cache-Control 标头,它们就会有所不同。最终,您不能指望客户端会加载更新的文件,除非您使用 URL 缓存破坏程序(如您所提到的),或者使用适当的缓存控制标头来提供内容。
以下是上述 HTTP 缓存链接的摘录:
4.2。 新鲜度
...由于源服务器并不总是提供明确的过期时间,因此缓存也可以使用 启发式地确定特定条件下的过期时间 情况(参见第 4.2.2 节)....
4.2.2。 计算启发式新鲜度
...如果响应具有 Last-Modified 标头字段(
的第 2.2 节) [RFC7232]),鼓励缓存使用启发式过期值 这只不过是自那时以来间隔的一小部分。
该分数的典型设置可能是 10%....
在这种情况下,给定的缓存实现可能会使一周前最后修改的响应在一天后失效,但只会使一个月前最后修改的响应在 4 天后失效。
但这仍然不能真正回答你的问题,因为启发式意味着缓存实现可以做它认为最好的任何事情。