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即可访问.在"网络"标签中,您可以看到所有请求,内容和标题.