我的本地机器上运行着一个 Web 服务器,当我使用localhost地址对它执行cURL 请求时,它执行得非常快。但是,当我添加 /etc/hosts 之类的
127.0.0.1 test.local
然后执行相同的 cURL 请求:
curl -I http://test.local:3002/images/logo.png
它延迟了 2-3 秒。localhost再次将 cURL 请求改回不会产生延迟。
这是每次都可以重现的。
我试过在下面运行慢速请求dtruss,看看是否能找到导致延迟的系统调用。没有什么异常表现出来。
我试过通过netcat它只是返回来制作一个虚拟服务,HTTP/1.0 200 OK所以我可以保证问题不是真的由于我的网络服务器造成的。同样,没有区别:localhost快如您所愿,但会test.local延迟。
在这一点上,我认为存在某种 DNS 问题。也就是说,/etc/hosts不是首先被咨询,也就是说,我的上游 DNS 正在被检查,失败了,然后/etc/hosts正在被咨询,最终有效。
这可能吗?被OS X Lion以某种方式咨询我/etc/hosts的解析器链以后呢?