Chrome 在 macOS / OS X 上解析 /etc/hosts 的速度很慢

mka*_*erg 15 networking mac dns google-chrome hosts-file

我们的开发人员使用 Docker 或 VirtualBox(使用 Vagrant)在本地测试他们的代码(并且两者都会出现问题)。为方便起见,我们修改 /etc/hosts 以指向正确的 IP 地址。例如,

local.test.company.com 10.200.10.1
Run Code Online (Sandbox Code Playgroud)

我们的一些开发人员使用 Linux,一些开发人员使用 macOS Sierra (10.12.3)。在 Mac 上,Chrome(和其他浏览器)中对 local.test.company.com 的请求通常需要很长时间(最多一分钟或更长时间)才能解决。(该问题在 Ubuntu Linux 上不会发生。)在此期间,选项卡上的“加载图标”是向左旋转的灰色图标。一旦它变为向右旋转的蓝色图标,它就会很快完成。对于在开发过程中经常刷新站点的开发人员来说,缓慢的加载时间可能是一个真正的问题。

基于这个问题,Chrome 似乎需要整整一分钟来解析该站点。这对我来说没有意义 - /etc/hosts 中的站点应该立即解析。一些开发人员可以非常一致地重现这种行为。其他人断断续续地看到它或根本看不到它,我一直无法弄清楚为什么。

为什么对 local.test.company.com 的请求需要很长时间才能在 Web 浏览器中解析?

或者,我能做些什么来“调试”这个问题并找出需要这么长时间的原因?


补充说明

  • 在 Chrome 处于“隐身模式”并打开“禁用缓存”的情况下,该行为继续发生。
  • ping 立即解析 local.test.company.com。

小智 17

我在 macOS High Sierra (10.13.3) 上的 Chrome 64.0.3282.167 中遇到了同样的问题,这个 StackOverflow 答案为我解决了这个问题:

/sf/answers/714007801/

引用:

将 localhost 的所有主机文件条目放入一行,如下所示:

127.0.0.1 localhost myproject.dev myotherproject.dev 
::1 localhost
Run Code Online (Sandbox Code Playgroud)


mka*_*erg 0

我最终明白了这一点。事实证明,当圆圈向左旋转时,Chrome不一定会解析。chrome 上的圆圈在数据上传期间向左旋转,在数据下载期间向右旋转。

我通过调试在 Chrome 中运行的 PHP 应用程序解决了这个问题。PHP 响应来自 Chrome 的请求,Chrome 中的圆圈继续向左旋转,直到printPHP 中的第一个语句。也就是说,直到服务器将第一个字节的数据发送回客户端。

所以,综上所述,这根本不是DNS解析的问题。DNS 很好,我们的 Web 应用程序根本没有像我们想象的那样快地发送回任何数据(由于在调试器中暂停或由于其他原因)。