为什么 chrome 需要花两分钟的时间才能发现 hosts 文件中指定/阻止了某个域名,并且这个时间可以大大减少吗?

为什么 chrome 需要花两分钟的时间才能发现 hosts 文件中指定/阻止了某个域名,并且这个时间可以大大减少吗?

我在 hosts 文件中指定了某些域来阻止它们。因此,当我未在 127.0.0.1 上运行任何 Web 服务器时,将域重定向到 127.0.0.1 将阻止该域。

为什么 chrome 需要两分钟才能发现域名在 hosts 文件中被阻止了,这个时间可以大大减少吗?

如果我访问 rice.com,它就会加载。(我使用 rice.com 只是作为测试)

然后我尝试在 hosts 文件中使用这些行来阻止网站加载

127.0.0.1 rice.com
127.0.0.1 www.rice.com

保存 hosts 文件后立即在 chrome 中访问 rice.com,它仍然可以加载。

但是,如果 rice.com 加载完成后,我将其保留两分钟,然后尝试重新加载它,它会显示“rice.com 拒绝连接”。因此,chrome 最终发现该域名已被阻止。

如果我随后编辑 hosts 文件以解除对该域的阻止,通过注释这些行,那么 chrome 会立即发现它已被解除阻止并转到那里。因此,对于解除阻止,chrome 非常敏感。(可以理解,因为如果 chrome 无法加载它,我想它会尽一切努力尝试加载它,其中一部分是检查 hosts 文件)。

我在 Windows 7 和 Windows 10 上测试了这一点,结果是一样的。(除了我在 Windows 10 上的一次测试,它立即响应拾取块。但除了那一次之外,Windows 10 似乎需要一段时间才能拾取它,但在 2 分钟后拾取它,就像 Windows 7 一样)。

我试过了ipconfig /flushdns,但没发现有什么不同

我想知道是否有任何与这两分钟延迟相关的设置以及有什么方法可以减少它?

注意-有人评论询问有关 Firefox 的问题。我在 Firefox 上测试过,发现 Firefox 更糟糕。我在 hosts 文件中屏蔽了 rice.com,Firefox 看到了。然后我解除了屏蔽。Chrome 立即发现它已被解除屏蔽,但 Firefox 甚至在两分钟后仍未发现。Firefox 花了 4 分钟才注意到 rice.com 已被解除屏蔽,而 chrome 则立即注意到了。至于另一种方式,因此,一旦网站加载,然后该网站被屏蔽,chrome 需要 2 分钟才能意识到。Firefox 需要多长时间才能意识到,好吧,我给了 Firefox 4 多分钟的时间才刷新,但它仍然没有发现

答案1

首先要澄清几件事:浏览器不会检查 hosts 文件,操作系统确实。请注意(如果您还不知道的话),您不能通过将 URL 添加到 hosts 文件来“阻止”它,而只需将 IP 指定给未运行(任何)Web 服务器的本地计算机。

因此,如果 Chrome 仍连接到该网站,则意味着该网站的 IP 仍在某处,即使它已从计算机的 DNS 缓存中消失。您可能还需要通过 清除浏览器缓存chrome://net-internals/#dns,希望这能解决问题。您可以在将 URL 输入到 hosts 文件后通过 ping 来测试这一点(更改应该是立即的,如果没有,请刷新操作系统的 DNS 缓存ipconfig /flushdns,如果它没有帮助,则浏览器不是问题所在)。

如果浏览器似乎仍然存在问题,请尝试重新加载页面绕过缓存或者在隐身标签页中打开该 URL,这样也应该可以绕过缓存。

相关内容