如何清除/刷新Google Chrome中的DNS缓存?


903

您可能知道Google Chrome浏览器具有自己的内部DNS缓存。有没有一种方法可以清除它而不必等待超时或关闭浏览器?


我刷新Chrome的DNS缓存的唯一原因是,如果不这样做,便无法访问Google。幸运的是,Google并不是唯一的搜索引擎(否则我不会发现这个问题),而且我只需要在工作中使用Chrome。
Nolonar 2013年

对我来说,这可能是由于resolv.conf中的DNS服务器不正确引起的。(我正在尝试访问VPN上的内部服务器)。T-com的人员错误地配置了DNS以响应其广告站点而不是NXDOMAIN,并且编写Chrome的人员并不关心遵守resolv.conf命令,而是乐于使用任何看起来有效的DNS服务器。
Ketil

Answers:


1315

导航至chrome:// net-internals /#dns,然后按“清除主机缓存”按钮。


41
奇怪的是,这仅在一个方向上起作用。我在hosts文件中有一个映射,该映射将域名映射到本地计算机(即127.0.0.1),当我删除映射并刷新Chrome中的DNS缓存时,它可以从Internet正确加载网站,但是当我将映射再次添加到hosts文件,它仍然可以从Internet加载网站。清除DNS缓存(也使用ipconfig / flushdns清除了操作系统缓存)后,它会在Chrome中显示缓存的DNS列表为空,但仍然可以从Internet加载网站!好像是个错误。

10
更令人烦恼的是,Chrome浏览器在DNS缓存列表中正确显示了该域的IP地址(127.0.0.1)(刷新并尝试再次加载该站点之后),但仍从Internet加载了该站点。

4
太棒了,有人知道所有chrome:// *选项的列表吗?
伊恩

29
@Ian chrome:// about
短暂

10
对我来说还不够。必须在命令提示符下找到“ ipconfig / flushdns”(在下面的答案中找到)
Adam Tal 2014年

174

有时您需要在刷新DNS之后刷新套接字池:

chrome://net-internals/#sockets

4
请注意,Chrome现在会监视hosts文件并在文件发生任何更改时自动清除dnscache hosts。—您可以通过在hosts文件后添加一个空行来轻松测试该方法是否在您的系统上工作,并且列表chrome://net-internals/#dns将自动更新。— Windows的dnscache服务还将(至少在win 8.1上)监视主机文件的更改,因此更新hosts文件后,只需单击“刷新套接字池”按钮即可。不需要什么了。
和平者

是的,自1年左右以来,我似乎已经注意到了相同的行为。但是,也许它并非一直有效,因为我仍然对此答案表示赞同。
Bojan Hrnkas,2015年

刚刚在Server 2003上进行了测试。每当hosts文件发生任何更改时,dnscache服务都会自动重新加载缓存,而无需ipconfig /flushdns废话。ipconfig /flushdns在整个问题上似乎都是一条鲱鱼。
Pacerier,2015年

即使在用cmd刷新dns并做了可接受的答案后,也为我工作了
Rob Scott

1
不再有效。
嬉皮士(Hippyjim)'18年

53

“导航到chrome:// net-internals /#dns”在Google Chrome浏览器中不起作用,至少在我的系统上不起作用。看起来此解决方案可能适用于Google Chrome操作系统,但更一般地说不适用于Google Chrome浏览器。对我来说,链接重定向到此处:
The Chromium Projects

看来“清空缓存”是更好的解决方案。还要注意,我的浏览器说的是“首选项”而不是“选项”

通过http://www.google.com/support/forum/p/Chrome/thread?tid=026b6a1d9151a6e3&hl=zh-CN

“转到工具->选项->后台->清除浏览数据并选中'清空缓存',然后单击清除浏览数据。是的,我知道,这不是我希望它清除的DNS缓存,但看起来似乎如此。现在它对我有用。”


4
确认这对我有用,清除浏览数据->清空缓存。没有其他方法起作用。谢谢PJ。
航空

当/etc/resolver/foo.com被忽略时,这对铬和铬都有效。
chovy

看起来Google正在逐步将名称更改为不同版本的某些内部URL。从27.0.1421.0(184274)版本开始...
DocSalvager 2014年

至少在打开OpenVPN并因此切换我的活动DNS服务器之后,清除缓存的图像和文件对我不起作用(Ubuntu上为Chromium 33)。(清除主机缓存,就像在流行的答案中一样也不起作用。)到目前为止,除了重新启动浏览器或在URL中输入IP地址外,我没有发现任何有效的方法。
Jesse Glick 2014年

3
清除缓存的图像和文件对我有用!不知道为什么,但是确实如此。Windows 8.1,Chrome 41.0.2272.89 m
Bing

43

单击“清除主机缓存”即可chrome://net-internals/#dns为Google Chrome浏览器执行此操作,但是您的计算机上还需要考虑其他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):

sudo killall -HUP mDNSResponder

您的路由器可能也正在缓存DNS(重新启动DNS或阅读手册)。最终的测试是使用dig,但这默认使用网络的DNS主机,而不是权威服务器:

dig superuser.com

要直接从源查询,请尝试以下操作:

dig superuser.com @ns1.serverfault.com

1
对我来说,“ sudo Discoveryutil mdnsflushcache”在El Capitan(10.11)上不起作用,但是“ sudo killall -HUP mDNSResponder”起作用了,它说Discoveryutil不存在,也许是Sierra或更高版本?
以斯拉

20

在带有Chrome 32的OS X 10.9.1中,我需要清除主机缓存并刷新套接字池,以使Chrome刷新DNS缓存:

  1. 导航至chrome:// net-internals /#dns,然后点击“清除主机缓存”
  2. 导航到chrome:// net-internals /#sockets,然后单击“刷新套接字池”

我需要它在Windows 8.1一样,所以它不只是OS X.
benrick

Linux版Chrome还用得着chrome://net-internals/#sockets
pengemizt

Chrome for Linux仅需要进行套接字刷新。没有DNS刷新。superuser.com/a/611712/30982
Elijah Lynn '02

18

这对我有用:清空并清除磁盘缓存

在Chrome中,点击扳手图标,然后点击选项。转到高级选项卡。单击“ 隐私”部分下的“ 清除浏览数据”按钮。仅选择“清空缓存”复选框,然后单击“ 清除浏览数据”按钮。

这立即生效-我什至不必关闭浏览器。


1
这似乎可以迫使Chrome识别对hosts文件的更改。
minamhere 2012年

在尝试了chrome://net-internals/#dns此处提到的冲洗技巧之后,这在Mac Chrome上对我有用,但没有成功。
Markus Amalthea Magnuson

12

据我所知,在最新版本的Chrome(我使用的是26.0.1410.43)中,没有(可靠的)方法可以做到这一点,至少在Mac上则没有。此页面上的任何建议都没有对我有用。

我的情况是我添加了一个hosts文件条目,但是Chrome仍将转到DNS返回的IP地址。Firefox可以正常工作。

实际上,该chrome://net-internals/#dns页面只是为我提供有关IP地址的信息。它显示主机条目中的IP,但显然不是实际从何处获取站点。


2
这里同样的问题。我曾尝试清除缓存,清除内部DNS缓存,ipconfig flush dns,但它仍从实时域加载本地网站。如果我在“隐身”中打开它,或者在Firefox中打开,但是正常的Chrome 拒绝重置其DNS
andrewtweber 2013年

9

我知道这是一个老问题,但是与其他人一样,我也为之烦恼:即使清除了缓存,仍然需要一两分钟才能使新的DNS更改生效。

有几种解决方法。通过chrome:// net-internals /#dns清除DNS缓存后(或使用达到相同结果的扩展名):

  1. 打开一个隐身窗口,该域的新DNS映射将立即生效。

  2. 清除浏览器缓存。如果您使用浏览器进行常规浏览,则会很麻烦。您可以以其他用户身份运行浏览器的单独实例,并且清除该帐户中的缓存不会干扰您的常规浏览缓存。我没有尝试过,但是应该可以。

  3. 按CTRL + F5。我必须按住CTRL + F5大约一秒钟,这会连续几次重新加载页面。这是奇怪的行为,但它有效并且同样有效。这是我的首选方法。

理想情况下,应该有一个可以清除DNS和缓存(特别是仅文档缓存而不是cookie缓存)的插件,但是我还没有找到任何类似的东西。

更新:在OSX上,防毒面具应用程序非常适合在主机文件之间进行切换,并且与第二种解决方法一起使用时,它非常有效。


1
刷新将无济于事。活动的TCP套接字仍将处于活动状态。您可以等待一到两分钟,也可以手动冲洗它们。
和平者

6

Chrome_Hosts_Flush_Util

解决由于Chrome使用套接字池而导致修改Chrome 主机文件后,Chrome无法使用正确主机的问题。

Chrome会在连接池中保持长连接,以加快速度。当Chrome发现请求可以重用连接池中的连接时,它不会再通过DNS,因此,我们始终认为Chrome不会立即响应主机更改。

Chrome浏览器在chrome:// net-internals /#sockets标签中提供了用于刷新连接池的界面,但我认为我不得不先转到该标签并单击带有触控板的小按钮真是令人讨厌。

我发现当单击嵌入式套接字池按钮时,Chrome执行两个关键的JavaScript方法。

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

因此,我将这两种方法封装在AppleScript脚本中,该脚本可以转换为OS X应用程序或Alfred工作流,而这两种方法都可以轻松调用。


嗨,Boreas320,如果链接过时了,您能否提供答案中所提供链接的摘要?不鼓励仅/主要是链接的答案,因为它们可能会过时。
bertieb

起来!好主意!谢谢!但是,直到我用document.getElementById('sockets-view-flush-button')。click();替换了javascript为止,它对我来说都没有用。
i_a

5

我试图以多种方式刷新DNS缓存,但没有任何帮助。最后,我计划更改DNS条目。此技巧适用于所有通过高速LAN连接访问Internet的人。

在LAN连接上,通常为用户提供两个DNS地址。一个是主要的,另一个是辅助或替代的DNS地址。我所做的是,我只是将辅助地址更改为主要地址,反之亦然。它立即为我工作。

我将备用DNS地址保留为主地址两天了。问题得以解决,后来,我恢复了旧的DNS条目。


5

全过程:

在IIS(Windows 8)中创建站点,设置主机头。

尝试在没有主机文件的情况下找到主机,确保使用http://,因此它不仅会执行Google搜索。在Chrome“版本32.0.1700.76 m”中正确失败

将host添加到主机文件作为127.0.0.1,现在可以在chrome中找到它。

从主机文件中删除并运行ipconfig / flushdns,chrome仍然显示站点!

除了CTRL + F5以外,什么也不做,现在站点更正在Chrome中失败。

在这里有许多不同的答案,我想知道我们是否都有稍微不同的用例。



2

尝试使用DNS Flusher for Chrome。请注意,要使用它,--enable-benchmarking启动Chrome浏览器时,它需要一个命令行标志。


扩展名不再存在
jmgarnier

2

导航至chrome:// net-internals /#dns,然后按“清除主机缓存”按钮。正如已经回答的那样,您可能还需要在OS X中使用dscacheutil -flushcache命令来刷新系统范围的DNS缓存。Windows命令提示符中的ipconfig / flushdns


2

在Mac OS X上,上述方法都不适合我。采取了以下方法:

单击Chrome菜单>首选项>单击show advanced settings页面底部的链接>单击部分中的clear browsing data按钮privacy>仅选择cached images and files并且download history(也许不需要后者,但也不会造成伤害)>单击clear browsing data按钮。


1

对于iPhone用户,这些技术同样有效。我必须对网站进行一些测试,我想覆盖普通的DNS服务器,并使用自己的DNS服务器处理尚未公开的DNS条目。

我在iPhone 6 Plus的wifi设置中将DNS条目覆盖到了自定义DNS服务器。对于Safari和Perfect Browser来说已经足够了。但是Chrome似乎忽略了这一点,并拥有自己的一组DNS条目。我不知道它们来自哪里。

我做了他们上面描述的

  1. 导航至chrome:// net-internals /#dns,然后点击“清除主机缓存”
  2. 导航到chrome:// net-internals /#sockets,然后单击“刷新套接字池”

并且我还必须使用如上所述的InCognito标签。

Chrome仅使用Then自定义DNS条目。

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.