为什么要有一些外部的javascript文件?数字?

时间:2014-02-15 12:45:16

标签: javascript css web

我见过很多网站,包括他们的JavaScript和CSS外部资源这样的东西:

filename.js?v=3cc1b79c2abb

filename.css?v=7bbb71ecd5eb

最后的“?v = ...”事情...... 这是什么?这对什么有用?

谢谢! 干杯:)

4 个答案:

答案 0 :(得分:4)

这些是“缓存清除”的一种形式 - 它们强制浏览器下载该文件的最新版本,而不是冒险从缓存中加载旧文件。

答案 1 :(得分:1)

还有更深层次的东西 - 为什么我们需要缓存破坏?

为了提高效率,我们必须让浏览器缓存资源文件。为了实现这一点,我们将最后修改日期设置为一个非常古老的日期(例如,01-Jan-1970 00:00:00.000)以及将来的到期日期。这两件事将使浏览器缓存文件,以便不再从服务器请求它们。这非常有效。但是,这会在更新应用程序时导致问题。没有资源会再次下载!为了解决这个问题,我们将构建工具配置为在资源URL末尾添加对构建唯一的版本号查询字符串。通常使用构建时间戳或uuid或源存储库版本号(在SVN等版本控制工具的情况下,为每次提交提供唯一的版本号)作为附加到资源URL末尾的版本号字符串。这会强制浏览器在应用程序更新时下载新版本。

答案 2 :(得分:0)

这是v=7bbb71ecd5ebjs的您自己的版本/关键字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是静态资源,因此服务器将忽略此参数。这些数字通常是一些时间戳,它通常是强制浏览器不缓存图像(或任何其他资源)的最佳方式。