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

我尝试了“刷新”按钮。我试过F5,Control-F5,Control-R,Control-Shift-R,在单击“刷新”按钮的同时按住Control,我能想到的一切-它实际上并未从服务器加载新内容。我已经与Fiddler确认了。

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

评论

可以使用私人浏览窗口吗?

您的网络服务器是否有可能通过缓存提供旧页面而不是新版本?在这种情况下,重新加载多少次都没有关系。

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

Control + F5超过了缓存,如果没有,那就很奇怪了。

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

#1 楼


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


评论


如果这是您所做的,则将其标记为答案

–埃尔兹
09年12月10日在0:15

它可能会损害常规浏览性能,但前提是您使用IE进行常规浏览...

–乔尔·穆勒(Joel Mueller)
09年12月10日在1:07

Ev:面向用户的问题通常通过在每次触摸代码时更改所有脚本和样式表的URL来解决,通常通过添加?version-number查询字符串后缀来解决。

– bobince
09年12月10日在1:53

“每次我访问该网页”可能都没有按照您的想法进行。参见fiddler2.com/redir/?id=httpperf

– EricLaw
2010年1月5日于20:33

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

– Phillip Ngan
10 Mar 4 '10 at 17:32

#2 楼

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

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

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

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

评论


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

–马库斯·里默(Marcus Riemer)
2012-12-12 13:48

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

–松饼
13年2月4日在15:15

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

–David Thielen
2014年6月17日14:33



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

–丹
2015年8月3日9:00

#3 楼

IE中的Ctrl + F5会重新加载页面,而忽略缓存

评论


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

– EMP
09年12月10日,0:56

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

–克里斯
09年12月10日在1:53

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

– EMP
09年12月10日下午5:55

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

– EricLaw
2010年1月5日于20:32

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

–rcarver
2011年12月2日,13:15

#4 楼

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-在ASP.NET MVC网站上刷新/
对于MVC3.0效果很好。

评论


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

– EricLaw
2010年1月5日于20:31

一切都很好,但这无济于事。

–马特西亚斯·乌利希斯(Matthias Urlichs)
15年6月8日在8:49

#5 楼

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

这并不理想,因为您可能并不希望清除整个缓存,但是由于我不使用IE进行常规浏览,因此它可以正常工作对我来说。

#6 楼

IE9中仍然会发生这种情况。
令人惊讶的是,答案是Ctrl-Shift-Refresh按钮

评论


它的功能与Ctrl-Refresh按钮不同吗?

–琼·昂斯托特(Jon Onstott)
13年4月10日在22:14

#7 楼

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

使用PHP向当前URL添加随机令牌,以便浏览器被欺骗以为它是一个单独的页面。

评论


但是,使网址难看。

–LawrenceC
2012年8月22日在18:38

#8 楼

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

希望有帮助。

#9 楼

单击刷新按钮时,按住alt或ctrl键。

#10 楼

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

除了随机令牌方法外,我通常会一直这样做强制完全重新加载(请求)页面及其所有相关文件,我只是将光标放在url的末尾,然后按Enter。每次都能工作...我使用IE8。

#11 楼

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

#12 楼

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

F5>从缓存加载而不刷新,Alt + D,ENTER>确实刷新绕过缓存。
(Alt + D可以通过单击来替换地址栏)