本地 MAMP Web 服务器 URL 的 DNS 查找需要 5 秒以上

本地 MAMP Web 服务器 URL 的 DNS 查找需要 5 秒以上

我在 OS X 10.7 上运行 MAMP。我在 Apache 中设置了一个虚拟主机,如下所示:

<Directory "/sites/example.com/">
Allow From All
AllowOverride All
</Directory>
<VirtualHost *:80>
    ServerName "example.local"
    ServerAlias "www.example.local"
    DocumentRoot "/sites/example.com"
</VirtualHost>

在 /etc/hosts 中我添加了以下内容:

127.0.0.1 example.local

一切正常,大概一两周前还非常快。我不确定发生了什么变化,但现在请求的 DNS 查找部分几乎每次加载页面时都需要 5 秒钟以上,Firebug 和 Chrome 都报告了这一点。

对本地地址进行 ping 操作看起来不错:

->ping example.local
PING example.local (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.073 ms

Chrome 显示的内容如下:

Chrome 网络面板输出

如果我在第一次连接后立即刷新,DNS 查找似乎已被缓存。但不久之后再次刷新会导致查找速度再次变慢。

任何帮助,将不胜感激!

答案1

嗯,example.local通常是一个 mDNS(零配置)地址,因此您的 mDNS 配置很有可能在某种程度上已经损坏,并且需要几秒钟才能超时,然后才能恢复为/etc/hosts

为什么不直接添加localhostServerAlias并通过该名称访问它?否则,至少使用没有与您的系统具有不同含义的顶级域名的域名。

答案2

您也可以使用没有 .something 的域名,因此只需example去掉.local. 即可,正如这里提到的http://www.justincarmony.com/blog/2011/07/27/mac-os-x-lion-etc-hosts-bugs-and-dns-resolution/看来 OSX 使用 .local 来表示 Bonjour。

我仅使用不带 .local 的示例进行了测试,它似乎解决了这个问题。

答案3

我在使用 AJAX 时遇到了非 .local 站点的这个问题 - 我设法通过在 /etc/hosts 中添加以下几行来修复它

::1 slow-site.url      
fe80::1%lo0 slow-site.url

在每个有问题的网站的主要网站块上方,其中“slow-site.url”是“example.local”或其他内容。

它是一个 IPv6 地址 - 更多详细信息请参见此处:

https://superuser.com/questions/241642/what-is-the-relevance-of-fe801lo0-localhost-in-etc-hosts

相关内容