題 如何強制Internet Explorer(IE)真正重新加載頁面?


使用Internet Explorer 8測試我的Web應用程序時,我經常發現它沒有重新加載頁面,所以我沒有看到我的更改。這導致了大量浪費的時間和挫折,想知道為什麼我的修復“不起作用” - 實際上瀏覽器從未加載固定版本。

我嘗試過刷新按鈕。我試過了 F5控制 - F5控制 - [R控制 - 轉移 - [R,抱著 控制 單擊“刷新”按鈕時,我能想到的一切 - 它實際上並沒有從服務器加載新內容。我已經向Fiddler證實了這一點。

我怎麼告訴IE“我不在乎你認為你有什麼緩存,我想 重裝 頁面 - 沒有,我 意思是它 這一次,誠實對待上帝,我想要你 其實 轉到服務器並再次下載所有內容“?


146
2017-12-09 23:52


起源


可能使用私人瀏覽窗口? - Josh Lee
您的Web服務器是否可能是舊頁面(通過緩存)而不是新版本?在這種情況下重載的次數並不重要。 - Michael Todd
Michael,不,我在Fiddler中驗證IE沒有從服務器獲取頁面內容。 - EMP
Control + F5超過了Cache,如果它沒有,那就很奇怪.... - Tom Wijsman
到目前為止我在StackExchange上遇到的問題的最佳措辭! - user785529


答案:


  1. 選擇 工具>> Internet選項
  2. 點擊 設置 按鈕 瀏覽記錄
  3. 選擇 每次我訪問網頁 單選按鈕。
  4. 點擊  關閉“設置”對話框。
  5. 點擊  關閉“Internet選項”對話框。

119
2017-12-09 23:57



如果這是您所做的,請將其標記為答案 - Earlz
這可能會損害一般瀏覽性能,但只有當您使用IE進行一般瀏覽時... - Joel Mueller
Ev:通常通過在每次觸摸代碼時更改所有腳本和样式表的URL來修復面向用戶的一面,通常是通過添加 ?version-number 查詢字符串後綴。 - bobince
“每次我訪問網頁時”可能都不符合您的想法。看到 fiddler2.com/redir/?id=httpperf - EricLaw
我同意@EricLaw,如果您使用Fiddler,您將看到即使在“每次訪問網頁時”都設置了與該頁面關聯的文件,有時也不會重新加載。使用IE工具欄菜單:緩存>始終從服務器刷新,或在Fiddler中清除緩存按鈕。 - Phillip Ngan


既然IE8是瀏覽器,你可以按 F12 打開開發工具並選擇頂部的“緩存”菜單,然後始終從服務器刷新以繞過緩存。

簡而言之, F12。 點擊 高速緩存  - > 始終從服務器刷新

如果這是所需的操作,您也可以在此處清除緩存。始終刷新選項不是全局選項,不會妨礙IE中的整體性能。

IE7也有開發工具,但必須單獨安裝。您還可以使用IE8 dev工具在IE7模式下運行瀏覽器。


41
2017-07-08 18:30



+1,無需使用全局選項即可解決此問題。 - Marcus Riemer
相近 這裡,仍然不總是刷新所有內容。而且我不知道網址的重新加載也很好 - 每個窗口似乎都有自己的F12。 這個 如果你有權訪問javascript include,那麼這是一個更徹底的方法。 - ruffin
你如何在IE 11中做到這一點?我找不到緩存選項。 - David Thielen
在IE 11中,此選項位於F12 - >網絡 - >左側第3個圖標下。 - Den


按Ctrl+F5 在IE中重新加載忽略緩存的頁面


22
2017-12-10 00:38



不,它沒有。我知道它在某些時候忽略了緩存,但並非總是如此。 - EMP
Ctrl + f5始終從服務器重新加載頁面。它不一定做的是重新加載頁面引用的額外文件
足夠公平 - 但我需要它重新加載一切。 - EMP
CTRL + F5應該執行頁面及其所有資源的完全刷新。稍後通過XMLHTTPRequest進行的調用可能會被緩存(如果您不希望它們被緩存,請發送適當的無緩存標頭)。需要注意的是,如果有問題的頁面是XML,它實際上是通過MSXML加載的,並且DocHost不會正確地遵守CTRL + Refresh。 - EricLaw
ctrl + f5並不總是從服務器重新加載所有內容。在我的測試中,即使頁面已更改,在按下ctrl-f5後,html文件中包含的javascript也不會重新加載。 - rcarver


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。


16
2017-12-10 01:31



不真實的。 IE6 +完全尊重所有禁止緩存的標頭。 fiddler2.com/redir/?id=httpperf - EricLaw
這一切都很好,但沒有幫助WRT這個問題。 - Matthias Urlichs


Web開發人員工具欄有一個按鈕,可以輕鬆清除緩存。我通常在你描述的情況下使用它。

它並不理想,因為你可能不想真正清除整個緩存,但由於我不使用IE進行一般瀏覽,它對我有用。


6
2017-12-09 23:58





這仍然發生在IE9中。 令人驚訝的是,答案是 按Ctrl - 轉移 - 刷新按鈕


4
2018-04-01 03:47



這是否與Ctrl-Refresh按鈕的功能不同? - Jon Onstott


順便提一下,您的網站瀏覽者也可能存在這個問題。我在AJAX書中看到了以下想法......

使用PHP將隨機令牌添加到當前URL,以便瀏覽器被認為是一個單獨的頁面。


3
2017-12-10 00:14



但是,使URL變得醜陋。 - LawrenceC


我自己也有同樣的問題。我認為唯一的方法是清除緩存(安全 - >刪除瀏覽歷史記錄)。僅檢查“Internet臨時文件”。

希望這可以幫助。


2
2017-12-09 23:58





按住要么 ALT 要么 CTRL 單擊刷新按鈕時鍵。


2
2017-11-17 15:36





我同意在網址中添加隨機令牌是最可靠的解決方案,一旦實現,用戶就不必做任何事情。

除了隨機令牌方法,我傾向於總是強製完成頁面及其所有相關文件的重新加載(請求),我只需將光標放在URL的末尾,然後按Enter鍵。每次都工作......我使用的是IE 8。


1
2017-08-12 02:58