6

每次我刷新站点并查看其页面源时,javascript src ie js.js?version=1364903356;版本号总是变化的。

我的问题是:这个数字是什么意思;如果我把js.js每一页都放进去,网站就不能工作。

4

4 回答 4

8

该版本通常被附加用于缓存目的,或者更确切地说,用于使缓存无效(通过更改版本号,因此,请求的 URL),因此它被视为新资源并重新下载。

于 2013-04-02T12:06:42.503 回答
2

这个数字可能毫无意义。几乎可以肯定它只是被附加到 URL 中,以便 URL 发生更改,因此 JS 不会从缓存中获取。

于 2013-04-02T12:07:01.853 回答
1

这是一种常用技术,用于防止或管理浏览器通常会缓存的 javascript 和其他文件的缓存。

如果版本号总是变化,那么这意味着有问题的页面正在阻止您的浏览器缓存文件;每个请求都将加载文件的新副本,无论它是否已更改。

这是不好的做法,很可能是由于相关站点的配置错误。

更常见的是,版本号将保持不变,但可以由站点本身触发更改。这意味着对于大多数请求,浏览器的缓存将起作用,但站点所有者可以控制是否刷新缓存,例如当他更新脚本文件时。

如果没有这种技术,已经缓存了文件旧版本的浏览器可能不知道文件已经更新,并且可能无法获取更新的版本。这可能会导致页面上脚本文件之间的版本冲突。

事实上,有一些技术上更正确的方法可以做到这一点,而不涉及在 URL 的末尾添加随机值。HTTP 标准规定浏览器应该查询 URL,并告诉站点它缓存了哪个版本。然后该站点可以响应“未更改”消息,并且浏览器可以使用缓存的版本。这应该意味着问题中使用的技术不是必需的。

但是,在某些情况下,该技术是必要的,因为某些浏览器和/或 Web 服务器配置可能无法使用标准方法正常工作,并且浏览器最终可能仍会错误地使用缓存版本。

因此,这种技术可以被视为一种解决方法。

于 2013-04-02T12:11:13.577 回答
1

这只是为了avoid Caching purposes and request new each time。每当您访问相同的内容时。如果您在 IIS 中设置启用静态内容缓存,则浏览器将向HTTP 304资源发出未修改状态。

您可以在 chrome 中查看。打开开发人员工具 ( f12),然后转到网络选项卡。您将在这样的请求标头中看到。

Request Method:GET
Status Code:304 Not Modified

IIS/任何 Web 服务器将确定内容是更改还是相同的内容。如果内容与缓存中的内容相同,则不会发起新请求。

通过附加版本号,文件名/url/资源将被更改。所以浏览器会发出一个新GET的资源请求。

于 2013-04-02T12:08:43.800 回答