Skip to content

FAQ: 修改 hosts 后,Chrome 不能立刻生效?

oldj edited this page Jul 20, 2018 · 7 revisions

问题:

修改 hosts 后,Chrome 不能立刻生效?

解答:

造成这个现象的原因是 Chrome 本身还会对 DNS 做一次缓存,一般系统 hosts 修改后,过一两分钟 Chrome 就会更新。如果不想等那么久,可以按以下方案进行操作:

方案一:手动刷新 Chrome 缓存

Chrome 可以访问 chrome://net-internals/,点击右上角下拉菜单中的 Flush sockets ,一般可以马上生效。

如下图:

image

参见 #160

方案二:断开网络再重连

网络断开并重连后,Chrome 会自动刷新 DNS 缓存。以 macOS 为例,可以在终端执行以下命令:

sudo -S killall -HUP mDNSResponder

也可以将这个命令放入 SwitchHosts! 的【设置】->【自定义命令】中,如下图所示:

需要将红框中的 123456 换成你的 sudo 密码。

注意: 这只是一个示例,【自定义命令】中的内容会以明文的方式保存在你的硬盘上,如果其中包含 sudo 密码,存在一定风险,实践中建议尽量避免。

另外,如果上面的命令对你无效,也可以试试更激进的:

for i in `ifconfig | grep ": flags=" | sed -E 's/(.*): .*/\1/g'`; do sudo ifconfig $i down; sudo ifconfig $i up; done

不过这个命令有点过于霸道,相当于直接断开 wifi 等再重新连接,可能会影响到系统中正在运行的其他程序。