缓存对我来说是一个黑暗的话题,我不明白它是如何工作的。在实践中,事实证明我正在对站点进行一些更改,并且一切似乎都很好。我可以连续数月甚至数年进行更改,并显示出来。但在某些时候,我会做一个大致相同性质的小改动(我会在那里更正一些样式)并在所有地方更新所有内容并重新启动,但我看到的是旧版本。它仅有助于清除浏览器缓存。
我想知道浏览器如何“选择”在什么时候“停留在旧版本上”?它是随机的,是否有某种模式或我的一些错误行为导致了这种情况?如果我必须清除缓存,这是否意味着我的用户在清除之前也会看到旧版本?难道我一切都好,用户需要清除缓存吗?
Cache-Control标头是主要的缓存标头。缓存的键基本上是资源的 url。
不仅浏览器可以缓存,代理服务器或服务也可以。
如果您没有在浏览器中进行特殊的缓存重置设置,那么它将对所有用户都有效。
要对js和css进行版本化,在资源的Url中添加一个附加参数(例如
/style.css?ver=1),并在更改版本时更改html代码中的版本号。或者设置您的 Web 服务器,以便在请求资源时返回响应标头
Cache-Control: no-cache这两种方法都能确保用户得到他们真正需要的东西。但是第二种方法会降低性能,因为您的资源永远不会被缓存,并且您的 Web 服务器将始终必须将此资源重新提供给客户端,并且浏览器将始终必须请求它。