如何强制Internet Explorer(IE)真正重新加载页面?


154

使用Internet Explorer 8测试我的Web应用程序时,我经常发现它不会重新加载页面,因此看不到更改。这导致了很多浪费时间和沮丧,想知道为什么我的修复程序“无法正常工作”-实际上,浏览器从未加载过该修复程序版本。

我尝试了“刷新”按钮。我试过F5Control- F5Control- RControl- - ShiftR拿着Control同时单击刷新按钮,一切我能想到的-它实际上并没有从服务器加载新的内容。我已经与Fiddler确认了。

我如何告诉IE“ 我不在乎您认为您缓存了什么,我想重新加载页面-不,真的,我的意思是这次,老实说,我希望您实际进入服务器并再次下载所有内容


2
使用私人浏览窗口,也许吗?
Josh Lee,2009年

3
您的网络服务器是否有可能通过缓存提供旧页面(而不是新版本)?在这种情况下,重新加载多少次都无所谓。
迈克尔·托德,

1
迈克尔,不,我在Fiddler中确认IE无法从服务器获取页面内容。
EMP 2009年

控制+ F5进入过去的高速缓存,这是奇怪的,如果它不....
塔玛拉Wijsman

2
到目前为止,我在StackExchange上遇到的问题的最佳措辞!
user785529 2013年

Answers:


126
  1. 选择工具>> Internet选项
  2. 单击浏览历史记录中设置按钮。
  3. 选择每次访问网页时单选按钮。
  4. 单击“ 确定”关闭“设置”对话框。
  5. 单击“ 确定”关闭“ Internet选项”对话框。

3
如果您这样做了,请将其标记为答案
Earlz

34
它可能会损害一般的浏览性能,但前提是您使用IE进行一般的浏览...
Joel Mueller

3
Ev:通常通过添加?version-number查询字符串后缀来更改每次触摸代码时所有脚本和样式表的URL,从而解决了这一问题。
bobince

4
“我每次访问该网页”可能都没有达到您的预期。见fiddler2.com/redir/?id=httpperf
EricLaw

6
我同意@EricLaw,如果您使用Fiddler,您会看到即使设置了“我每次访问该网页”,有时也不会重新加载与该页面关联的文件。使用IE工具栏菜单:“缓存”>“始终从服务器刷新”,或Fiddler中的“清除缓存”按钮。
菲利普·恩根

43

由于已经说明IE8是浏览器,因此您可以按F12打开开发工具,然后选择顶部的“缓存”菜单,然后始终从服务器刷新以绕过缓存。

简而言之,F12。单击缓存 -> 始终从服务器刷新

如果需要这样做,您也可以在这里简单地清除缓存。始终刷新选项不是全局选项,不会妨碍IE的整体性能。

IE7也具有开发工具,但必须单独安装。您也可以使用IE8开发工具以IE7模式运行浏览器。


+1无需使用全局选项即可解决此问题。
Marcus Riemer

类似于此处,仍然不能总是刷新所有内容。而且我也不知道跨URL的重新加载效果很好-每个窗口似乎有时都有自己的F12。如果您有权访问javascript包含,则是一种更彻底的方法。
鲁芬

1
您如何在IE 11中做到这一点?我找不到任何缓存选项。
David Thielen 2014年

4
在IE 11中,此选项位于F12->网络->左侧第3个图标下。
书斋

22

CtrlF5IE中的+会重新加载页面而忽略缓存


26
不,不是。我知道它有时会忽略缓存,但并非总是如此。
EMP 2009年

16
Ctrl + f5始终从服务器重新加载页面。它不一定要做的就是重新加载页面引用的额外文件

2
足够公平-但我需要它来重新加载所有内容。
EMP

1
CTRL + F5应该执行页面及其所有资源的完整刷新。稍后可能会缓存通过XMLHTTPRequest进行的调用(如果您不希望缓存它们,则发送适当的no-cache标头)。一个警告是,如果有问题的页面是XML,则实际上是通过MSXML加载的,并且DocHost不正确地使用CTRL + Refresh。
EricLaw 2010年

3
ctrl + f5并不总是从服务器重新加载所有内容。在我的测试中,即使页面已更改,按ctrl-f5后html文件中包含的javascript也不会重新加载。
rcarver

18

IE非常渴望缓存页面,即使您不告诉它通过缓存头也是如此。Microsoft KB 234067说明了必要的咒语。简而言之,您需要提供以下标头。

Pragma: no-cache
Cache-Control: no-cache
Expires: <some time in the past>

设置Expires = -1(如知识库文章中所建议)应适用于大多数框架。浏览器必须将无效的日期格式视为过去的格式(RFC 2616)。

在.NET中,您可以在调用网页之前使用以下方法以逐页的粒度进行操作:

HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Response.Cache.SetValidUntilExpires(false);
HttpContext.Response.Cache.SetRevalidation(System.Web.HttpCacheRevalidation.AllCaches);
HttpContext.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
HttpContext.Response.Cache.SetNoStore();

请参阅:http : //www.localwisdom.com/blog/2012/10/force-a-page-refresh-on-a-asp-net-mvc-website/ 适用于MVC3.0。


1
不对 IE6 +完全遵守所有禁止缓存的标头。fiddler2.com/redir/?id=httpperf
EricLaw

一切都很好,但这无济于事。
Matthias Urlichs 2015年

6

Web开发人员工具栏的“网络”选项卡上有一个按钮,可以轻松清除缓存。我通常会在您描述的情况下使用它。

这不是理想的选择,因为您可能确实不想清除整个缓存,但是由于我不使用IE进行常规浏览,因此它对我有用。



3

顺便说一句,您的网站查看者也可能存在该问题。我在AJAX书中看到了以下想法...

使用PHP将随机标记添加到当前URL,这样浏览器就被欺骗以为它是一个单独的页面。


但是,使网址难看。
LawrenceC

2

我自己也遇到过同样的问题。我相信唯一的方法就是清除缓存(安全->删除浏览历史记录)。仅检查“ Internet临时文件”。

希望这可以帮助。



1

我同意将随机令牌添加到url是最可靠的解决方案,并且一旦实现,用户就无需执行任何操作。

除了随机令牌方法外,我往往会强制执行页面及其所有相关文件的完全重新加载(请求),而只是将光标放在url的末尾,然后按Enter。每次都能工作...并且我使用IE 8。


1

F12-> CTRL+ R对于IE9 +来说速度稍快。正如人们提到的那样,IE不会像Chrome那样非常智能地清除缓存。


1

我知道这似乎有些奇怪……但是最近我注意到的一件事是,有时您会根据“刷新”的方式而获得不同的结果。我已经看到以下行为:

F5>从缓存中加载而不刷新,
Alt+ DENTER> 真正绕过缓存进行刷新。
Alt+ D可以替换为在地址栏中单击)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.