如何强制IE重新加载javascript?

Max*_*ing 43 javascript internet-explorer internet-explorer-8

我在Vista上使用IE 8,每次更改javascript文件然后开始调试时,我必须按Ctrl + F5才能重新加载我的javascript.有没有什么方法可以让我在开始调试时自动重新加载javascript,但是在浏览网页时不会失去性能提升?

是的,我知道你可能不喜欢IE,但请记住问题不是"什么是最好的浏览器?".

Pao*_*ino 48

在URL末尾添加一个字符串以中断缓存.我经常做(用PHP):

<script src="/my/js/file.js?<?=time()?>"></script>
Run Code Online (Sandbox Code Playgroud)

因此,每当我正在处理它时它会重新加载,然后在它投入生产时将其取下.实际上,我把它抽象出来了一点,但这个想法仍然是一样的.

如果您查看本网站的来源,他们会以类似的方式在网址末尾附加修订号,以便在更新javascript文件时强制更改.

  • 当"只是浏览你正在使用的网站"时,你会失去性能提升. (5认同)
  • 正如上面提到的@Paolo,只需将修订号附加到URL的末尾即可.somescript.js?r = 2011.07.24或其他什么.您还可以附加上次修改日期的编码版本.这允许浏览器仅缓存最新版本的脚本.更新脚本后,URL会更改,因此浏览器会再次提取该文件. (3认同)

Alc*_*nja 25

Paolo的一般想法(即有效地改变请求uri的某些部分)是你最好的选择.但是,我建议使用更静态的值,例如更改脚本文件时更新的版本号,这样您仍然可以获得缓存的性能提升.

所以这样的事情:

<script src="/my/js/file.js?version=2.1.3" ></script>
Run Code Online (Sandbox Code Playgroud)

或者可能

<script src="/my/js/file.2.1.3.js" ></script>
Run Code Online (Sandbox Code Playgroud)

我更喜欢第一个选项,因为这意味着您可以维护一个文件,而不必不断地重命名它(例如,在源代码管理中维护一致的版本历史记录).当然,任何一个(正如我所描述的那样)都会涉及每次更新include语句,因此您可能想要采用动态的方式来实现它,例如每次部署时用动态替换固定值(使用Ant或其他).


Vad*_*dim 16

当您使用网页或javascript文件时,您希望每次更改时都重新加载它.您可以在IE 8中更改设置,以便浏览器永远不会缓存.

按照这个简单的步骤.

  1. 选择工具 - > Internet选项.
  2. 在常规选项卡中,单击浏览历史记录部分中的设置按钮.
  3. 点击"每次访问网页"单选按钮.
  4. 单击确定按钮.

  • 这不符合你的想法.有关每个设置的讨论,请访问www.enhanceie.com/redir/?id=httpperf. (3认同)

und*_*rob 5

如果您希望在您的浏览器上执行此操作(也就是不强制在您的用户上执行此操作),那么我不会将您的代码设置为不使用缓存.正如何塞所说,有一个表现损失.

而且我不会完全关闭IE上的缓存,因为您访问的每个网站都会失去性能提升.您可以告诉IE始终从服务器刷新特定站点或浏览会话:

  1. 打开IE Developer Tools
  2. 从菜单中选择缓存
  3. 单击以选中"始终从服务器刷新"

或者,对于键盘 - 快捷方式 - philes(像我一样)那里..

  • F12,Alt + C,向下箭头,Alt + R.

注意事项:已经说过了......请记住,无论何时以不同的方式开发/测试将在生产中查看网站,您都有可能获得混合结果.一个很好的例子是这个缓存问题.我们发现了一个问题,即IE缓存了我们的Ajax调用,而不是更新GET方法的结果.如果我们在IE中禁用缓存,我们就不会在开发中看到这个问题,并且会将它部署到这样的生产中.