是否缓存了.js文件?

Mar*_*mer 13 javascript caching google-chrome

我最近创建了一个网站,我对.js文件进行了更改,但是当我从FTP服务器删除.js文件并上传新文件时,新文件没有显示在网站上.我检查了网站上.js文件背后的源代码并且它不对,它显示旧文件的来源,而不是新文件的来源,即使旧文件已经消失.那是因为我的浏览器缓存了.js文件吗?

注意:我有这个来源

<meta http-equiv="cache-control" content="no-cache" />
Run Code Online (Sandbox Code Playgroud)

在我的页面上阻止浏览器缓存我的页面,我知道它适用于HTML,但有了那个源,资源文件是否仍然被缓存?

我的其他页面上没有那行代码,只有我的主页,但.js文件仍然在其他页面上被引用,所以也许它是如何被缓存的?

此外,有没有办法检查您的浏览器缓存?我用铬.

编辑:我刚刚清除了浏览器缓存并重新加载了网站,文件正常运行,这意味着文件确实被缓存了.那么现在我的问题就变成了如何防止资源文件被缓存?

Zen*_*ter 15

我不肯定no-cache meta标签是要走的路.它否定了所有缓存和类型,从而破坏了快速访问页面的目的.

此外,AFAIK,meta标签每页都有效,所以如果你有一个没有它的页面引用你的JS - 它将被缓存.

阻止JS文件(以及CSS)被缓存的广泛接受的方法是区分对它们的请求:

说,你有:

<script type=”text/JavaScript” src=”somescript.js?></script>
Run Code Online (Sandbox Code Playgroud)

这个将缓存它(除非上面的元标记存在.

你想要的是在每个页面加载上面的行看起来不同(URL-wise),如下所示:

<script type=”text/JavaScript” src=”somescript.js?some-randomly-generated-string?></script>
Run Code Online (Sandbox Code Playgroud)

CSS也是如此.

如果您正在使用某种JS网络 - 如果你给它某种"无缓存"配置选项,它会照顾你.

当然,你也可以在纯JS中做到这一点.某种Date相关的字符串是一种选择.


现在,通常,您不希望否定所有缓存,因此这样做的方法是在URL中添加版本参数:

<script type=”text/JavaScript” src=”somescript.js?version=1.0.0?></script>
Run Code Online (Sandbox Code Playgroud)

并从那里管理您的脚本.

编辑

无需任何额外的扩展.除非我非常误,否则"Chrome开发者工具"内置于所有Chrome版本中(肯定是测试版和开发版),按Ctrl-Shift-I即可访问.在"网络"标签中,您可以看到所有请求,内容和标题.

  • 后者.你将它更改为1.0.1,然后强制重新下载JS,然后重新缓存它直到下一个URL更改. (2认同)