Caching Chrome缓存就像一个疯狂的浏览器

Caching Chrome缓存就像一个疯狂的浏览器,caching,google-chrome,Caching,Google Chrome,我有一个web服务,与大多数其他服务一样,使用js和css文件。我使用老把戏,在js和css文件中添加一个版本号,比如?v=123,每次我们在生产中更新服务时,这一点都会发生变化 现在,除了Chrome之外,它在所有浏览器上都可以正常工作。Chrome似乎更喜欢它的缓存版本而不是新版本,因此似乎忽略了附加的变量。在某些情况下,强制它刷新缓存(cmd+r/ctrl+f5)是不够的,因此我必须进入选项并清除缓存,以便它加载新内容 有没有人在Chrome上遇到过这个问题?如果是这样,问题的解决方案是什

我有一个web服务,与大多数其他服务一样,使用js和css文件。我使用老把戏,在js和css文件中添加一个版本号,比如?v=123,每次我们在生产中更新服务时,这一点都会发生变化

现在,除了Chrome之外,它在所有浏览器上都可以正常工作。Chrome似乎更喜欢它的缓存版本而不是新版本,因此似乎忽略了附加的变量。在某些情况下,强制它刷新缓存(cmd+r/ctrl+f5)是不够的,因此我必须进入选项并清除缓存,以便它加载新内容


有没有人在Chrome上遇到过这个问题?如果是这样,问题的解决方案是什么?

Chrome当然应该将具有不同查询字符串的请求视为不同的请求;
style.css?v=123
的缓存结果决不能用于
style.css?v=124
。如果您看到不同的行为,请在中提交错误,并在此处发布错误ID


也就是说,我首先检查页面的缓存时间是否比您预期的长。如果页面本身的新版本没有下载,那么它仍然会请求
?v=123
,因为HTML不会更改。如果您在页面中发送长寿命的缓存头,那么Chrome很可能会比您预期的更积极地缓存它。如果你看到的是这种行为,请开始更新。

我也有过这种经历

我运行一个会员网站,如果他们未登录或试图查看其会员级别不允许的内容,该网站将显示诸如“您必须以黄金会员身份登录才能查看此内容”之类的内容。但即使用户登录,由于谷歌Chrome积极的缓存,用户仍会看到“您需要登录”。然而,在Firefox中,当我测试登录和退出所有5个级别的成员时,它工作得很好——每个级别都显示正确的内容


虽然Chrome的缓存问题可以通过在用户每次登录和注销时清除缓存来解决,但采用这种方法真的很烦人。

我也有过同样的经历


您可以在Chrome+Mozilla中使用Ctrl+Shift+R进行无缓存浏览。

的确如此。检查加载的html页面的源代码(查看源代码),查看chrome developer工具栏请求了哪些资源。我怀疑这是一个chrome bug,尽管激进的缓存可能是一个令人讨厌的“特性”。回答得很好,迈克!我并不感到惊讶,为页面本身发送回来的标题可能会请求比我们希望的更长的缓存。我不记得调查过,所以这是我要做的第一件事。再次感谢!我的问题是我们没有设置expires/cache控制头。在尝试更激烈的事情之前,绝对值得检查这些设置。