我见过很多网站,包括他们的JavaScript和CSS外部资源这样的东西:
filename.js?v=3cc1b79c2abb
和
filename.css?v=7bbb71ecd5eb
最后的“?v = ...”事情...... 这是什么?这对什么有用?
谢谢! 干杯:)
答案 0 :(得分:4)
这些是“缓存清除”的一种形式 - 它们强制浏览器下载该文件的最新版本,而不是冒险从缓存中加载旧文件。
答案 1 :(得分:1)
还有更深层次的东西 - 为什么我们需要缓存破坏?
为了提高效率,我们必须让浏览器缓存资源文件。为了实现这一点,我们将最后修改日期设置为一个非常古老的日期(例如,01-Jan-1970 00:00:00.000)以及将来的到期日期。这两件事将使浏览器缓存文件,以便不再从服务器请求它们。这非常有效。但是,这会在更新应用程序时导致问题。没有资源会再次下载!为了解决这个问题,我们将构建工具配置为在资源URL末尾添加对构建唯一的版本号查询字符串。通常使用构建时间戳或uuid或源存储库版本号(在SVN等版本控制工具的情况下,为每次提交提供唯一的版本号)作为附加到资源URL末尾的版本号字符串。这会强制浏览器在应用程序更新时下载新版本。
答案 2 :(得分:0)
这是v=7bbb71ecd5eb
和js
的您自己的版本/关键字css
,使用此功能后,浏览器中不存在使用旧版javascript和css的缓存。
这意味着您的新css和javascript更新将在没有任何缓存的情况下应用。
答案 3 :(得分:0)
强制浏览器下载文件,而不是从缓存中获取文件。
例如,您有这个带有css:styles.css?v=blablabla
的网址,但稍后您更改了css并希望立即看到这些更改(而不是等待浏览器缓存过期或强制用户按 Ctrl + F5 )您将其更改为styles.css?v=otherblablabla
。浏览器将其视为不同的URL,因此必须下载它。
它只是query string中的一个参数,由于url指向静态资源,因此Web服务器会忽略这些参数。
您还可以看到类似image.png?1392469113262
的内容。它只是一个名为1392469113262
的参数,没有任何价值。 image.png是静态资源,因此服务器将忽略此参数。这些数字通常是一些时间戳,它通常是强制浏览器不缓存图像(或任何其他资源)的最佳方式。