toolinbox/iHosts

切换host要等,不及时

Closed this issue · 15 comments

imkkc commented

切换host要等2分钟才能变,不及时

@wuzhongbo 你好,切换 Hosts 后,在终端中运行 cat /etc/hosts,查看 /etc/hosts 文件是否实时更新了?

另外,你是用什么方式判断切换 Hosts 后是否生效的?

@wuzhongbo 你好,有时间试试我上面提的方式验证下吧。

iHosts 本质上是修改 /etc/hosts 这个文件,而且一定是切换后实时更新的。

至于 /etc/hosts 修改后是否需要 2 分钟才生效,这点我也觉得奇怪,因为我这边并不会。所以也想知道你是用什么方式判断切换 Hosts 后是否生效的。

@wuzhongbo 有时间试了吗?

@wuzhongbo 期待你的测试结果,谢谢。

@wuzhongbo 现在什么情况,问题好了吗?

我发现对于 chrome 浏览器来说有时候不是实时生效,但是对于 ping 命令来说已经变了,可能是浏览器自带DNS 缓存

@wuzhongbo @fengyunhe 是的,iHosts 确确实实已经更新 /etc/hosts 文件,但 Chrome 有时有自己的缓存机制、不一定会实时生效;另外,可以试试 Chrome 的隐身模式,更新可能更及时些。

我遇到了类似的情况,切换以后ping到了指定的ip,但是打开页面仍然不是对应的测试环境。

@Lazyjason 其实上面已经解释了,这是因为浏览器另外有一层自己的缓存机制,而这是 iHosts 无法控制的部分。可以试试修改后使用浏览器的隐身模式,或者试试别的浏览器。

尝试了……因为切换隐私模式和更换其他近期没有打开的浏览器都没有生效,所以觉得很苦恼。

@Lazyjason 是要看运气?我刚刚试了,将一个域名的 IP 改为无效,在正确的 Chrome 浏览器中,还是能正常打开;试了 Chrome 的隐身模式,就无法打开了。

😂可能真的是运气,或者就是我司的内网太奇葩

@Lazyjason 他司总是好的,我司总是个神奇的存在 😂

chrome://net-internals/#dns 刚百度了一下,发现有一个地址可以查看 chrome 的缓存。哈哈

@fengyunhe Good 不过,我试了下:

  1. 随意访问一个网站
  2. 在 chrome://net-internals/#dns 中,可以找到这个网址的 DNS 缓存。点击 clear host cache 清空缓存。
  3. 使用 iHost 将该网站指向 127.0.0.1
  4. 新开 Tab 页打开刚才的网站,还是可以打开。此时,回到 chrome://net-internals/#dns 搜索后能找到这个网址的 DNS 记录,扑街…
  5. 新开 Chrome 的隐身窗口,打开刚才的网站,发现已经指向 127.0.0.1 了

结论:Chrome 的 DNS 缓存太顽固了,隐身模式还算管用。