【问题标题】:How to force Internet Explorer (IE) to REALLY reload the page?如何强制 Internet Explorer (IE) 真正重新加载页面?
【发布时间】:2009-12-09 23:52:52
【问题描述】:

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

我试过刷新按钮。我试过 F5Control-F5Control-R、Control-Shift-R,按住Control同时点击刷新按钮,我能想到的一切——它没有t 实际上从服务器加载新内容。我已经向 Fiddler 确认了这一点。

我如何告诉 IE “我不在乎你认为你缓存了什么,我想重新加载页面 - 不,我是认真的 这一次,老实说,我希望你实际上去服务器重新下载所有东西”?

【问题讨论】:

  • 使用私人浏览窗口,也许?
  • 您的网络服务器是否可能正在服务旧页面(通过缓存)而不是新版本?在这种情况下,你重新加载多少次都没关系。
  • Michael,不,我在 Fiddler 中验证了 IE 没有从服务器获取页面内容。
  • Control+F5 越过缓存,如果没有就奇怪了....
  • 迄今为止我在 StackExchange 上遇到的问题的最佳措辞!

标签: internet-explorer internet-explorer-8 web-development


【解决方案1】:
  1. 选择工具>> Internet选项
  2. 点击浏览历史记录中的设置按钮。
  3. 选择每次访问网页时单选按钮。
  4. 点击确定关闭设置对话框。
  5. 单击确定关闭 Internet 选项对话框。

【讨论】:

  • 如果这是您所做的,请将其标记为答案
  • 这可能会损害一般浏览性能,但前提是您使用 IE 进行一般浏览...
  • Ev:这个面向用户的一面通常通过在每次触摸代码时更改所有脚本和样式表的 URL 来解决,通常通过添加 ?version-number 查询字符串后缀。
  • “每次我访问该网页”可能并不像您认为的那样。见fiddler2.com/redir/?id=httpperf
  • 我同意@EricLaw,如果您使用 Fiddler,您会看到与页面关联的文件有时不会重新加载,即使设置了“每次访问网页”也是如此。使用 IE 工具栏菜单:缓存 > 始终从服务器刷新,或 Fiddler 中的清除缓存按钮。
【解决方案2】:

既然说IE8是浏览器,你可以按F12打开开发工具,选择顶部的缓存菜单,然后总是从服务器刷新绕过缓存。

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

如果这是所需的操作,您也可以在此处简单地清除缓存。始终刷新选项不是全局选项,不会影响 IE 的整体性能。

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

【讨论】:

  • +1 用于在不使用全局选项的情况下解决此问题。
  • 类似于here,但并不总是刷新所有内容。而且我也不知道重新加载是否适用于跨 URL - 每个窗口有时似乎都有自己的 F12。 This 是一种更彻底的方法,如果您有权访问 javascript 包含。
  • 你如何在 IE 11 中做到这一点?我找不到缓存选项。
  • 在 IE 11 中,此选项位于 F12 -> 网络 -> 左起第三个图标下。
【解决方案3】:

Ctrl+F5在IE中重新加载页面忽略缓存

【讨论】:

  • 不,它没有。我知道它有时会忽略缓存,但并非总是如此。
  • Ctrl+f5 总是从服务器重新加载页面。它不一定要做的是重新加载页面引用的额外文件
  • 很公平 - 但我需要它来重新加载所有内容。
  • CTRL+F5 应该完全刷新页面及其所有资源。稍后通过 XMLHTTPRequest 进行的调用可能会被缓存(如果您不希望它们被缓存,请发送适当的无缓存标头)。需要注意的是,如果所讨论的页面是 XML,它实际上是通过 MSXML 加载的,并且 DocHost 不正确遵守 CTRL+Refresh。
  • ctrl+f5 并不总是从服务器重新加载所有内容。在我的测试中,即使页面已更改,html 文件中包含的 javascript 在按下 ctrl-f5 后也不会重新加载。
【解决方案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-refresh-on-a-asp-net-mvc-website/ 适用于 MVC3.0。

【讨论】:

【解决方案5】:

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

这并不理想,因为您可能真的不想清除整个缓存,但由于我不使用 IE 进行一般浏览,所以它适用于我。

【讨论】:

    【解决方案6】:

    这仍然发生在 IE9 中。 令人惊讶的是,答案是 Ctrl-Shift-刷新按钮

    【讨论】:

    • 这个功能与 Ctrl-Refresh 按钮有什么不同吗?
    【解决方案7】:

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

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

    【讨论】:

    • 让 URL 变得丑陋。
    【解决方案8】:

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

    希望这会有所帮助。

    【讨论】:

      【解决方案9】:

      在单击刷新按钮时按住 altctrl 键。

      【讨论】:

        【解决方案10】:

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

        除了随机标记方法之外,我通常会强制完全重新加载(请求)页面及其所有相关文件,我只需将光标放在 url 的末尾并按 Enter。每次都有效...而且我使用 IE 8。

        【讨论】:

          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

            我知道这可能看起来有点奇怪......但我最近注意到的一件事是,您有时会得到不同的结果,具体取决于您“刷新”的方式。我看到了以下行为:

            F5 > 从缓存加载而不刷新,
            Alt+D, ENTER > 真的刷新绕过缓存。
            Alt+D可替换为点击地址栏)

            【讨论】:

              猜你喜欢
              • 2016-02-11
              • 1970-01-01
              • 2011-12-20
              • 1970-01-01
              • 2012-06-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多