Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么有一些外部javascript文件?数字?_Javascript_Css_Web - Fatal编程技术网

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

为什么有一些外部javascript文件?数字?,javascript,css,web,Javascript,Css,Web,我见过许多网站在其JavaScript和CSS外部资源中包含如下内容: filename.js?v=3cc1b79c2abb 以及: 结尾的“?v=…”内容。。。 这是什么?这有什么用呢 谢谢大家!! 干杯:)这是一种“缓存破坏”形式-它们强制浏览器下载文件的最新版本,而不是冒险从缓存加载旧文件。这是一种“缓存破坏”形式-它们强制浏览器下载文件的最新版本,不要冒险从缓存中加载旧文件。这是您自己的版本/关键字v=7bb71ecd5eb的js和css,使用此版本后,浏览器中就不会有使用旧javas

我见过许多网站在其JavaScript和CSS外部资源中包含如下内容:

filename.js?v=3cc1b79c2abb
以及:

结尾的“?v=…”内容。。。 这是什么?这有什么用呢

谢谢大家!!
干杯:)

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

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

这是您自己的版本/关键字
v=7bb71ecd5eb
js
css
,使用此版本后,浏览器中就不会有使用旧javascript和css的缓存


这意味着您的css和javascript的新更新将在没有任何缓存的情况下应用。

这是您自己的版本/关键字
v=7bb71ecd5eb
js
css
,使用此版本后,浏览器中将不会缓存旧的javascript和css


这意味着css和javascript的新更新将在没有任何缓存的情况下应用。

这将强制浏览器下载文件,而不是从缓存中获取文件

例如,您有一个带有css的url:
styles.css?v=blablabla
,但后来您更改了css并希望立即看到这些更改(而不是等待浏览器缓存过期或强制用户按Ctrl+F5),您将其更改为类似于
styles.css?v=otherblabla
。浏览器将其视为不同的url,因此必须下载它

它只是中的一个参数,因为url指向静态资源,所以web服务器会忽略这些参数。
您还可以看到类似以下内容
image.png?1392469113262
。它只是一个名为
1392469113262
的参数,没有任何值。image.png是静态资源,因此服务器将忽略此参数。这些数字通常是某个时间戳,这通常是强制浏览器不缓存图像(或任何其他资源)的最佳方式。

强制浏览器下载文件,而不是从缓存获取文件

例如,您有一个带有css的url:
styles.css?v=blablabla
,但后来您更改了css并希望立即看到这些更改(而不是等待浏览器缓存过期或强制用户按Ctrl+F5),您将其更改为类似于
styles.css?v=otherblabla
。浏览器将其视为不同的url,因此必须下载它

它只是中的一个参数,因为url指向静态资源,所以web服务器会忽略这些参数。
您还可以看到类似以下内容
image.png?1392469113262
。它只是一个名为
1392469113262
的参数,没有任何值。image.png是静态资源,因此服务器将忽略此参数。这些数字通常是某个时间戳,这通常是强制浏览器不缓存图像(或任何其他资源)的最佳方式。

还有更深层次的内容-为什么我们需要缓存破坏


为了提高效率,我们必须让浏览器缓存资源文件。为此,我们将上次修改日期设置为非常旧的日期(例如,1970年1月1日00:00:00.000),并将到期日期设置为很长的将来。这两件事将使浏览器缓存文件,以便不再从服务器请求它们。这是非常有效的。但是,这会在更新应用程序时导致问题。将不再下载任何资源!为了解决这个问题,我们将构建工具配置为在资源URL的末尾附加一个版本号查询字符串,该字符串是构建所特有的。通常使用构建时间戳、uuid或源存储库版本号(在SVN等版本控制工具的情况下,它为每次提交提供唯一的版本号)作为附加到资源URL末尾的版本号字符串。这就迫使浏览器在应用程序更新时下载新版本。

还有更深层的问题-为什么我们需要破坏缓存


为了提高效率,我们必须让浏览器缓存资源文件。为此,我们将上次修改日期设置为非常旧的日期(例如,1970年1月1日00:00:00.000),并将到期日期设置为很长的将来。这两件事将使浏览器缓存文件,以便不再从服务器请求它们。这是非常有效的。但是,这会在更新应用程序时导致问题。将不再下载任何资源!为了解决这个问题,我们将构建工具配置为在资源URL的末尾附加一个版本号查询字符串,该字符串是构建所特有的。通常使用构建时间戳、uuid或源存储库版本号(在SVN等版本控制工具的情况下,它为每次提交提供唯一的版本号)作为附加到资源URL末尾的版本号字符串。这会迫使浏览器在应用程序更新时下载新版本。

为了防止缓存,我认为…关键字:缓存断路器。需要注意的是,代理服务器可能不喜欢这样的查询字符串。我更喜欢使用
/path/to/file.js/t=1234567
,其中包含文件的修改时间。然后,服务器使用
mod_rewrite
缩短修改时间。这确保了与代理甚至旧版本浏览器的兼容性。为了防止缓存,我认为…关键字:缓存断路器。应该注意的是,代理服务器可能不喜欢这样的查询字符串。我更喜欢使用
/path/to/file.js/t=1234567
,其中包含文件的修改时间。然后,服务器使用
mod_rewrite
缩短修改时间。这确保了与代理甚至旧版本浏览器的兼容性。+1-回答速度稍微快一点,但您也键入了一个连贯的句子,这与另一个答案不同。+1-回答速度稍微快一点
filename.css?v=7bbb71ecd5eb