带有问号的Javascript src

时间:2016-09-20 10:20:19

标签: javascript

我有一个问题。在我正在进行的旧项目中,我找到了这段代码:

  <script type="text/javascript" language="Javascript" src='<%= Page.ResolveUrl("~/javascripts/CardConnectorManager.js?2016071203")%>'></script>

我有:

  • /javascripts/CardConnectorManager.js

但没有

  • /javascripts/CardConnectorManager.js?2016071203

那个问号在做什么以及为什么有人写这样的东西? 也许这个文件只存在于服务器上的某些物件上?

4 个答案:

答案 0 :(得分:3)

David R's answer非常好,但我想添加一些信息:

通常有两种缓存破解方法:

  1. 重命名文件;
  2. 在文件末尾添加一些哈希值。
  3. 对于某些情况(see this question),第一种方法可能更好,但可能更痛苦。你如何将这个文件保存在版本控制中?如果有这么多文件怎么办?

    第二种方法更容易。您只需添加app.js?_=<some_string>之类的内容。 <some_string>可以是任何:时间戳,内部版本号或只是一个随机字符串。

    对于这种方法,您可能会发现使用gulp-rev等自动工具更好。

    更新:老实说,拥有项目中所有静态的修订版本会好得多:html,images,css,js。 有很多工具可以自动完成。

    或者,有一些技术,例如角度开发人员具有$templateCache服务,允许开发人员将所有项目的html(不包括index.html)放在单个js文件中。

答案 1 :(得分:2)

它指的是同一个CardConnectorManager.js文件。

为了防止缓存,在调用.js文件时调用后缀日期/时间戳是开发人员的常见做法。

希望这有帮助!

答案 2 :(得分:1)

基本上JS文件以&#34;?&#34;结尾(问号)后跟一些随机数用于强制刷新该特定文件的浏览器缓存。浏览器将下载的该网站的js文件存储在其高速缓冲存储器中,为了强制刷新它,后缀为随机数。

在您的示例中,如果仔细观察,指定的数字只是日期时间戳,即 - 数字2016071203代表 - 2016-07-12 03.如果您已在服务器上更新此文件,则只需更新新的时间戳(你可以使用任何随机数)。时间戳通常用于避免重复数字。

因此,下次每当您对该JS文件进行更改时,只需更新该编号,以便访问此文件的所有客户端都将获得更新的JS代码,而不是缓存的代码。

答案 3 :(得分:0)

问号(?)只是为了处理缓存。它每次在浏览器上刷新文件。我们使用相同的技术来刷新动态生成的图像。