【问题标题】:Is the querystring trick obsolete?查询字符串技巧过时了吗?
【发布时间】:2014-08-02 19:55:47
【问题描述】:

多年来,每当我进行需要扩散到客户端计算机的更改时,我都会在我的 CSS 末尾附加一个查询字符串:

<link href="/Resources/styles/styles.css?v=1" rel="stylesheet" />

但是,我最近注意到 Chrome 似乎非常“聪明”地知道我何时更改了 CSS 文件,并且通常最新的 CSS 会在测试中出现而无需查询字符串技巧。

所以我想知道:现代浏览器是否包含了新逻辑以使查询字符串技巧变得不必要?

谢谢!

【问题讨论】:

  • 我隐约注意到了这一点,但我仍然有一些烦人的东西在没有硬刷新的情况下不会更新
  • 大约 18 个月前,我在 Chrome 中对此进行了相当彻底的测试 - stackoverflow.com/a/3870743/453277。如果您发现 Chrome 中的行为与我所写的有所不同,请对我的回答发表评论,以便我进行更新。
  • 可能在用于缓存资源的 HTTP 标头中发生了一些变化。

标签: html css google-chrome browser


【解决方案1】:

这个技巧并没有过时,因为浏览器仍然无法在不请求文件的情况下知道文件已被修改,这只是 HTTP 的一个简单限制。如果标记已更改并且似乎不再匹配,Chrome 可能会猜测您的 CSS 已更改,但我不太确定这是如何发生的。

【讨论】:

  • 我猜浏览器可以通过例如比较本地副本和服务器副本的时间戳来判断。我只是想知道他们是否正在做类似的事情。
  • 他们确实使用了 HTTP 响应代码(200 和 304 是这里最重要的),但是浏览器没有任何方法可以识别时间戳或响应代码的差异,而无需先进行要求。如果您查看页面请求的标头,您将看不到任何有关相应 CSS 文件是否已更改的信息。浏览器可以确定文件已更改的唯一方法是提交请求,否则它必须做出某种有根据的猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2011-04-30
相关资源
最近更新 更多