我有一个问题。在我正在进行的旧项目中,我找到了这段代码:
<script type="text/javascript" language="Javascript" src='<%= Page.ResolveUrl("~/javascripts/CardConnectorManager.js?2016071203")%>'></script>
我有:
但没有
那个问号在做什么以及为什么有人写这样的东西? 也许这个文件只存在于服务器上的某些物件上?
答案 0 :(得分:3)
David R's answer非常好,但我想添加一些信息:
通常有两种缓存破解方法:
对于某些情况(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)
问号(?)只是为了处理缓存。它每次在浏览器上刷新文件。我们使用相同的技术来刷新动态生成的图像。