如何在InternetExplorer 8中禁用缓存

45
如何在IE8中禁用缓存? 我们正在进行JavaScript开发,并在IE8中测试它,但每次对JavaScript文件进行更改时都必须清除缓存。

1
如果你遇到了问题,那么你的用户也可能会遇到同样的问题。最好使用其中一个未被接受的答案来强制从服务器刷新。 - user420667
10个回答

70

打开Internet选项。在常规选项卡下,在浏览历史中点击设置。选择"每次访问网页时"单选按钮。

这并不是完全禁用缓存,但它应该解决您的根本问题——JS文件应该每次重新加载。


这不是我能保证的,你只能测试一下。 - EMP
6
根据我的经验,这种方法不适用于嵌套页面或包含 JavaScript 的控件。 - Dan Bailiff
6
更可靠的方法是从开发工具菜单中执行。按照 Mac 的建议,选择 缓存 -> 始终从服务器刷新 - Ruan Mendes

16

Ctrl+F5将会刷新整个页面,包括所有已缓存的JavaScript。

但有时候,即使使用Ctrl+F5也无法生效,因为IE在某些情况下无法100%正确地执行“刷新”操作。


11
如果失败了,查询字符串上的一个随机参数就可以解决问题:

index.html?a=346456


10

以这种方式加载您的 JavaScript。

<html>
...
<script type="text/javascript">
document.write('<script src="yourscript.js?'+Math.random()+'"></script>');
</script>
...
</html>

编辑: 如果这不是很明显,请在进入生产环境之前立即删除此代码!


2
只有在开发时才这样做,因为缓存是为了加快页面加载时间而存在的。但是这样做会使回来查找变得更困难,所以最好使用一个变量代替。 - Aram Kocharyan
它看起来真的像是黑客攻击,很容易在投入生产之前忘记将其删除。 - Igor Kustov

5
为了关闭浏览器缓存,请按照以下步骤进行操作:
MS IE
1. 对于IE5,请从菜单中选择“工具”,对于IE4,请选择“查看” 2. 选择“Internet选项” 3. 在“临时Internet文件”部分,单击“设置” 4. 选择“每次访问页面”作为“检查是否有更新版本的存储页面”的选项 5. 保存设置
希望这可以帮到您,请确认。

1
对于IE8和IE9,请转到Internet选项->常规选项卡。在浏览历史记录部分,单击“设置”按钮,然后在临时互联网文件部分下选择“每次访问网页时”,最后单击“确定”。 - furman87

4

按下"Fn F12"打开开发者工具

点击缓存

选择"始终从服务器刷新"

每次刷新页面时都会清除缓存,但也可以通过缓存菜单或快捷键来快速访问缓存清除功能,这些功能在开发者工具打开时都是有效的。

*注意- 必须保留开发者工具窗口打开,它不必置于最前端,但必须保持打开状态才能禁用缓存。


3
Ctrl+Shift+Del组合键将打开“清除个人数据”对话框(或从“安全”菜单中选择)。只取消选中第一项和第二项以清除缓存,不要取消选中其他内容。
但是通常情况下您不需要清除缓存。如果您通过Web服务器(如本地运行的IIS)访问js文件,则正常的缓存控制机制应该解决问题。如果不行,使用Ctrl+F5通常可以解决问题。

问题在于我们希望在生产环境中,由于JavaScript文件非常大,浏览器能够使用缓存。您所说的是哪种缓存控制机制? - Lydon Ch
我在谈论开发和测试。HTTP 的 Last-ModifiedIf-Modified-SinceETag 标头能够让浏览器和服务器判断文件是否已被修改,如果已经修改,则更新浏览器缓存的版本。 - josh3736
太棒了,它奏效了!我的问题是CSS在更改时无法呈现。 Ctrl + Shift + Del不起作用,然而Ctrl + F5最终清除了缓存。 - Ian Campbell

2
如果您的JavaScript文件仅从子目录中提供服务,您可以在IIS中启用该目录的即时内容过期。我最近在从子目录提供内容时遇到了这个问题,这是我找到的最快、最简单的解决方案。

1
听起来这是最好的解决方案,而且它适用于任何服务器(不仅仅是IIS)。 - Alexis Wilke

1

打开IE调试工具(F12),在菜单中选择缓存,然后选择始终从服务器刷新。这意味着您需要保持调试工具处于打开状态。


0

或许一种更简单的方法是不需要用户刷新浏览器,只需将js文件(和css)重命名即可。这就是我成功的做法……因为服务器不喜欢在.js文件之后加上随机数。


1
另一个技巧是只需将随机的查询字符串附加到文件末尾(即“http://mysite.com/myscript.js?random=B6646B155E”,其中随机值每次都不同--服务器应该忽略它,但浏览器将避免使用缓存版本)。当A.)您想强制所有客户端获取最新脚本(而不仅仅是开发机器)和B.)您无法访问服务器设置(例如页面过期)时,这非常有用。 - BrainSlugs83

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