JavaScript和可能的浏览器缓存问题

3
我是一名JavaScript新手,遇到了以下问题:
我会在一个单独的文件中编写JS代码,然后将文件包含在html代码中。JS代码运行良好,没有问题。接着我会对JS代码进行一些更改,点击浏览器窗口中的“刷新”按钮,有时候就会出现问题。我所做的JS代码更改弄乱了一些东西,代码不能按照预期工作。于是我开始寻找问题所在,但代码完全没有问题。我清除了浏览器缓存 - 仍然没有用。我撤销了对JS代码的更改,一切都正常了。我重新放入新代码 - 经过几次“刷新”点击之后 - 突然间它就能工作了。我使用Safari 4、Firefox 2.0遇到了这个问题。我还没有尝试过其他浏览器。
我的问题是 - 我是否需要使用某些JS技术或者从浏览器中简单地禁用浏览器缓存,还是存在不同的问题?感谢您的时间和帮助!
4个回答

4
如果你使用一个随机键引用JS文件,那就会破坏缓存:
例如:
var randomnumber=Math.floor(Math.random()*10000)
var scriptfile='http://www.whatever.com/myjs.js?rnd='+randnumber;

仅仅用于调试的话还是很不错的。


谢谢,我会尝试的。自从我开始检查代码以来,这经常困扰我,但代码没有问题。 - dalizard
不要使用随机数,而是使用类似版本号的东西。这样,浏览器只会缓存相同版本的JS。当您更改代码(js)中的某些内容时,更改版本,所有客户端都会自动找到新的JS。CSS也可以使用相同的技巧。 - ejoncas

3
当你重新加载/刷新网页时,大部分脚本都会从缓存中重新加载。你可以在单击刷新按钮时按住Shift键来强制浏览器重新加载外部脚本文件。
如果这样不起作用,您可能需要检查是否有代理服务器位于您和网页之间。如果是本地网页,则Shift按钮应该有效。

2

个人而言,我会使用 CTRL + F5 强制刷新。


1

我发现当我调试一些JS代码时,我只需要在另一个标签页中打开JavaScript的URL。当我上传后,我先切换到该标签页,然后刷新并测试代码。或者,在FireFox WebDeveloper插件中关闭缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接