題 如何在Google Chrome中清除/刷新DNS緩存?


您可能知道Google Chrome有自己的內部DNS緩存。有沒有辦法清除它而無需等待超時或關閉瀏覽器?


861
2017-10-26 21:12


起源


我沖洗Chrome的DNS緩存的唯一原因是因為如果我不這樣做,我就無法訪問Google。幸運的是,谷歌不是唯一的搜索引擎(否則我不會發現這個問題)而且我只需要在工作中處理Chrome。 - Nolonar
對我來說,這可能是由於resolv.conf中的DNS服務器不正確造成的。 (我正在嘗試訪問VPN上的內部服務器)。 T-com的用戶錯誤配置了他們的DNS以響應他們的廣告網站而不是NXDOMAIN,而編寫Chrome的人並不關心resolv.conf訂單,而是愉快地使用任何DNS服務器似乎工作。 - Ketil
有關: apple.stackexchange.com/questions/121425/... - Nathan Long


答案:


導航 鉻://網內部/#DNS 然後按“清除主機緩存”按鈕。


1252
2017-10-26 22:16



奇怪的是,這只適用於一個方向。我在hosts文件中有一個映射,將域名映射到本地計算機(即127.0.0.1),當我刪除映射並刷新Chrome中的DNS緩存時,它正確地從互聯網加載該站點,但是當我再次將映射添加到hosts文件,它仍然從Internet加載該站點。清除DNS緩存後,它會在Chrome中顯示緩存的DNS列表為空(也使用ipconfig / flushdns清除了操作系統緩存),仍然會從Internet加載網站!好像是個bug。 - Mee
更令人討厭的是,Chrome在DNS緩存列表中正確顯示該域的IP地址(127.0.0.1)(在刷新並嘗試再次加載站點之後),仍然從Internet加載該站點。 - Mee
太棒了,有沒有人知道所有chrome:// *選項的列表? - Ian
@Ian chrome://關於 - ephemient
對我來說還不夠。必須在命令提示符下“ipconfig / flushdns”(在下面的答案中找到) - Adam Tal


有時您需要在刷新DNS後刷新套接字池:

chrome://net-internals/#sockets

148
2018-06-25 08:38



請注意,Chrome現在可以監控 hosts 只要有任何更改,就可以文件並自動清除dnscache hosts 文件。 - 你可以通過在你的系統之後添加一個空行來輕鬆測試它是否適用於你的系統 hosts 文件,以及列表 chrome://net-internals/#dns 將自動更新.- Windows的dnscache服務也將(至少在win 8.1上)監視hosts文件的更改,因此在您更新之後 hosts 文件, 只需單擊“刷新套接字池”按鈕即可。不需要任何其他東西。 - Pacerier
是的,我似乎已經註意到1年左右的相同行為。然而,也許它不會一直有效,因為我仍然得到了這個答案的讚成。 - Bojan Hrnkas
剛剛在Server 2003上測試過。每當主機文件有任何更改時,dnscache服務 自動 無需任何重新加載緩存 ipconfig /flushdns 廢話。 ipconfig /flushdns 在整個問題上似乎是一個紅色的鯡魚。 - Pacerier
為我工作,即使在cmd沖洗dns並做出公認的答案 - Rob Scott
真棒,這是唯一適用於Chrome for Linux(Ubuntu 14.04)的解決方案。事實上,DNS刷新不會影響任何事情。所需要的只是進行套接字刷新。我認為這是一個錯誤。 - Elijah Lynn


“導航到chrome:// net-internals /#dns”在Google Chrome瀏覽器中不起作用,至少在我的系統上是這樣。看起來這個解決方案可能適用於谷歌Chrome操作系統,但一般來說不適用於谷歌Chrome瀏覽器。對我來說鏈接重定向到這裡:
Chromium項目 

看起來“清空緩存”是更好的解決方案。另請注意我的瀏覽器顯示“首選項”而不是“選項”

通過 http://www.google.com/support/forum/p/Chrome/thread?tid=026b6a1d9151a6e3&hl=en 

“轉到工具 - >選項 - >引擎蓋下 - >清除瀏覽數據並選中”清空緩存“並單擊清除瀏覽數據。 是的,我知道,這不是我期望它清除的DNS緩存,但似乎是嘿。 現在它對我有用。“


46
2017-10-20 01:46



確認這對我有用,清除瀏覽數據 - >清空緩存。沒有其他方法可行。謝謝PJ。 - Air
當/etc/resolver/foo.com被忽略時,這對我和鉻和鉻都有用。 - chovy
看起來Google正在逐步對不同版本的某些內部網址進行名稱更改。自版本27.0.1421.0(184274)起...... - DocSalvager
至少清理 緩存的圖像和文件 在打開OpenVPN並因此切換我的活動DNS服務器之後,對我不起作用(Ubuntu上的Chromium 33)。 (清除主機緩存 因為在流行的答案中也沒有用。)到目前為止,除了重新啟動瀏覽器或輸入URL中的IP地址之外,我還沒有找到任何有效的方法。 - Jesse Glick
空地 緩存的圖像和文件 為我工作!不知道為什麼,但確實如此。 Windows 8.1,Chrome 41.0.2272.89 m - Bing


單擊“清除主機緩存” chrome://net-internals/#dns 應該為谷歌瀏覽器執行此操作,但您的計算機上還需要考慮其他DNS緩存。

視窗:

ipconfig /flushdns

OS X 10.7之前(Lion之前):

sudo dscacheutil -flushcache

OS X 10.7-10.9(獅子,山獅,小牛隊):

sudo killall -HUP mDNSResponder

OS X 10.10+(約塞米蒂):

sudo discoveryutil mdnsflushcache

OS X 10.11,10.12+(El Capitan,Sierra):

sudo killall -HUP mDNSResponder

您的路由器也可能正在緩存DNS(重新啟動它或閱讀手冊)。最終的考驗是使用 ,但這會使用您網絡的DNS主機,而不是默認情況下的權威服務器:

dig superuser.com

要從源查詢,請嘗試以下方法:

dig superuser.com @ns1.serverfault.com

42
2018-02-06 04:18



“sudo discoveryutil mdnsflushcache”對我來說不適用於El Capitan(10.11),但是“sudo killall -HUP mDNSResponder”確實如此,它說發現似乎並不存在,也許是Sierra和它? - Ezra


在OS X 10.9.1 w / Chrome 32中,我需要清除主機緩存並刷新套接字池以使Chrome刷新DNS緩存:

  1. 導航 鉻://網內部/#DNS 並單擊 “清除主機緩存”
  2. 導航 鉻://網內部/#插座 abd點擊 “沖洗套接字池”

19
2018-02-20 01:59



我在Windows 8.1中也需要它,所以它不僅僅是OS X. - benrick
Chrome for Linux也需要它 chrome://net-internals/#sockets - pengemizt
Chrome for Linux只需要套接字刷新。沒有DNS刷新。 superuser.com/a/611712/30982 - Elijah Lynn


這對我有用:清空並清除磁盤緩存

在Chrome中,點擊扳手圖標,然後點擊 選項。去 在引擎蓋下 標籤。點擊 清除瀏覽數據 按鈕下 隱私 部分。選中“清空緩存”複選框,然後單擊 清除瀏覽數據 按鈕。

這立即起作用 - 我甚至不必關閉瀏覽器。


17
2018-05-10 22:18



這似乎有助於Chrome識別對hosts文件的更改。 - minamhere
在嘗試了之後,這在Mac Chrome上適用於我 chrome://net-internals/#dns 這裡提到的沖洗技巧,沒有成功。 - Markus Amalthea Magnuson


據我所知,在最近的Chrome版本中(我在26.0.1410.43),沒有(可靠的)方法,至少在Mac上沒有。此頁面上沒有任何建議對我有用。

我的情況是我添加了一個 主機 文件條目,但Chrome仍然會轉到DNS返回的IP地址。 Firefox工作正常。

事實上, chrome://net-internals/#dns 頁面簡直就是我的IP地址。它顯示來自hosts條目的IP,但這顯然不是它實際從中獲取網站的位置。


10
2018-04-10 13:40



同樣的問題在這裡我已經嘗試清除緩存,清除內部DNS緩存,ipconfig flush dns,它仍然從實時域加載本地網站。如果我在“Incognito”中打開它,它可以正常工作,或者在Firefox中可以正常工作,但是普通的Chrome 拒絕 重置其DNS - andrewtweber


我知道這是一個老問題,但我對其他人的抱怨感到惱火:即使清除緩存後,仍然需要一兩分鐘才能啟動新的DNS更改。

有幾種方法可以解決它。通過chrome:// net-internals / #dns(或使用實現相同結果的擴展名)清除DNS緩存後:

  1. 打開隱身窗口,域的新DNS映射將立即生效。

  2. 清除瀏覽器緩存。如果您使用瀏覽器進行常規瀏覽,這很麻煩。您可以運行單獨的瀏覽器實例 作為另一個用戶 並清除該帳戶中的緩存不會干擾您的常規瀏覽緩存。我沒試過,但它應該工作。

  3. 按CTRL + F5。我不得不按住CTRL + F5大約一秒鐘,連續重新加載頁面幾次。這是奇怪的行為,但它有效,也同樣有效。這是我的首選方法。

理想情況下應該有一個可以清除DNS和緩存的插件(特別是文檔緩存而不是cookie緩存),但我還沒有找到任何類型的東西。

更新:在OSX上,防毒面具應用程序非常適合在主機文件之間切換,以及#2解決方法,它非常有效。


9
2017-12-12 20:12



刷新不會有所幫助。活動的TCP套接字仍處於活動狀態。你要么等待(1-2分鐘)或者 手動沖洗 他們。 - Pacerier


Chrome_Hosts_Flush_Util

這是解決Chrome修改後無法使用正確主機的問題 主機文件 因為Chrome使用套接字池。

Chrome會在連接池中維護長連接以加快速度。當Chrome發現請求可以重用連接池中的連接時,它將不會再次通過DNS,因此,我們始終認為Chrome不會立即響應主機更改。

Chrome在chrome:// net-internals / #sockets選項卡中提供了一個用於刷新連接池的界面,但我認為我必須首先轉到選項卡並點擊這樣一個帶觸控板的小按鈕。

我發現當點擊刷新套接字池的按鈕時,Chrome會執行兩個關鍵的JavaScript方法。

g_browser.sendFlushSocketPools();
g_browser.checkForUpdatedInfo(false);

因此,我將這兩種方法封裝在AppleScript腳本中,該腳本可以轉換為OS X應用程序或Alfred工作流程,兩者都可以輕鬆調用。


6
2017-08-03 12:27



嗨Boreas320,您能否在答案中提供鏈接提供的摘要,以防它變得過時?不鼓勵僅僅/主要是鏈接的答案,因為它們可能過時。 - bertieb
起來!很棒的主意!謝謝!然而,在我用document.getElementById('sockets-view-flush-button')替換javascript之前它對我不起作用.Click(); - i_a


我試圖在很多方面刷新DNS緩存,但沒有什麼對我有用。最後,我計劃了 更改我的DNS條目。這個技巧適用於通過高速LAN連接訪問Internet的所有人。

在LAN連接上,通常向用戶提供兩個DNS地址。一個是主要的,另一個是次要或備用DNS地址。我所做的是我只是將輔助地址更改為主地址,反之亦然。它立刻對我有用。

我將備用DNS地址作為主要地址保留了兩天。問題解決了,後來我恢復了舊的DNS條目。


5
2018-06-13 20:24