激进缓存:所有浏览器都支持使用URL参数进行更新吗?

7
当强制缓存 CSS 和其他文件时,可以通过重命名文件并链接到新的副本(例如,将 style.123.css 重命名为 style.124.css)来迫使用户更新样式表的最新版本。通常使用的另一种方法是传递 URL 参数(例如,style.css?ver=123,稍后更改为 style.css?ver=124)。
所有浏览器是否都支持使用 URL 参数下载样式表的新副本?相对于重命名文件,使用 URL 参数有什么不利之处吗?

1
旧版浏览器不会缓存带有查询字符串的URL(这可能是由于旧版RFC建议或其他原因)。避免使用查询字符串是最安全的选择。 - Frank Farmer
谢谢 - 我就有这种感觉!是的,我又回到了好老式的style.XXXXX.css啦 :P - Chris Morris
2个回答

5
经过进一步研究,发现一些代理缓存服务不会缓存URL中带有查询字符串的文件。至于这是否适用于某些网络浏览器,我不清楚。
因此,使用查询字符串来更新被强制缓存的文件似乎是唯一的主要缺点 - 它们可能根本不会被缓存。

1
唯一不支持“查询参数控制缓存”的方式是,如果浏览器使用了使用不同参数值检索的缓存版本。我从未听说过这样的浏览器。因此,所有浏览器都支持这种技术。我能想到的唯一缺点是,您不能同时托管多个版本的资源。(假设您正在使用静态文件)

我早已猜到了,只是不确定旧版浏览器是否会以不同的方式处理它 - 例如,我不确定旧版浏览器是否会忽略<link href =“”/>中的查询参数并缓存style.css文件。是的,关于劣势是正确的。我的设置将HTML文件设置为在1分钟内过期(很快将提高到2周),而CSS设置为最大过期时间(2038年)。因此,这不会成为主要问题,因为HTML经常更新并链接到新文件 - 没有丢失样式表或任何东西。 - Chris Morris
1
经过进一步的研究,发现一些代理服务器不会缓存包含查询字符串的文件。 - Chris Morris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接