我在 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 显示的内容如下:
如果我在第一次连接后立即刷新,DNS 查找似乎已被缓存。但不久之后再次刷新会导致查找速度再次变慢。
任何帮助,将不胜感激!
答案1
嗯,example.local
通常是一个 mDNS(零配置)地址,因此您的 mDNS 配置很有可能在某种程度上已经损坏,并且需要几秒钟才能超时,然后才能恢复为/etc/hosts
。
为什么不直接添加localhost
为ServerAlias
并通过该名称访问它?否则,至少使用没有与您的系统具有不同含义的顶级域名的域名。
答案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