如何在Mac OS X Lion上消除localhost / virtualhost缓慢parsing/加载(2-3秒延迟)?

自从在Mac OS X Lion(2012年1月购买的全新MacBook Air)上设置我的开发环境以来,我注意到解决虚拟主机第一次非常慢(约3秒),但之后只要我继续定期加载它。

如果我将它保持原样几分钟,然后重新加载,第一次重新加载(再次)是痛苦的缓慢; 似乎正在caching一些东西。

如下所示,我没有使用.local TLD。

我的设置:Apache 2 – MySQL – PHP安装并启用 – 添加了几个虚拟主机之一,我创build的本地主机

我的/ etc / hosts:

127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 127.0.0.1 myproject.dev ::1 myproject.dev fe80::1%lo0 myproject.dev 

我的虚拟主机设置在username.conf中:

 NameVirtualHost *:80 <Directory "/Users/myusername/Sites/"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> <VirtualHost *:80> ServerName localhost DocumentRoot /Users/myusername/Dropbox/dev_envs/ </VirtualHost> <VirtualHost *:80> ServerName myproject.dev DocumentRoot /Users/myusername/Dropbox/dev_envs/myprojectname </VirtualHost> 

我有完全相同的问题,这让我疯狂!

把所有的主机文件条目为localhost成一行,如下所示:

 127.0.0.1 localhost myproject.dev myotherproject.dev ::1 localhost fe80::1%lo0 localhost 

为我工作就像一个魅力。 看起来像狮子的一个bug。

对于导致五秒查找的“.local”结尾的网站,还有另一个问题10.7。*到10.8.4。 详情和解决scheme由Bram(我们)Van Damme在以下链接提供:

http://www.bram.us/2011/12/12/mamp-pro-slow-name-resolving-with-local-vhosts-in-lion-fix/

“默认情况下,以.local结尾的任何主机名被视为Bonjour主机,而不是通过查询networking偏好设置中的DNS服务器条目。

要解决这个问题(不必重新命名每个虚拟主机),你需要在/ etc / hosts文件中为每个虚拟主机添加IPv6条目:“

 ::1 mysite.local fe80::1%lo0 mysite.local 127.0.0.1 mysite.local 

我也有同样的问题,在狮子。

奇怪的是,我的解决办法与杰里米的对立。 我在/ etc / hosts的一行中有一大堆someproject.dev条目。 在第一次加载一个网站的任何一个花了很长时间,像一分钟左右。 如果我在5秒钟之内再次使用它,速度非常快,但时间更长,而且需要一分钟时间。 我曾怀疑过各种各样的东西,mysql连接,Ruby版本,Rails漏洞,Apache,Phusion Passenger。 直到我终于看到控制台,并意识到DNS查找正在尝试。

所以,我把他们全部放在单独的线上:

 127.0.0.1 localhost 127.0.0.1 myproject.dev 127.0.0.1 myotherproject.dev 

突然间,一切都变得活泼起来。 两台机器都一样。

为IPv6 :: 1指定相同的主机帮助了我。

 127.0.0.1 something.local.mydomain.org ::1 something.local.mydomain.org 

确保将IP v6条目与localhost不在同一行

 ::1 localhost 

IP v6条目分成一行

 fe80::1%lo0 here and_here 

现在有时候真的很快,但是有一些例外,那就是老的滞后。 他们可能是基于其他原因。

在OSX El Capitan上,我的工作就是在IPv4条目的上方创build一个重复的IPv6条目

 fe80::1%lo0 demo.test.dev 127.0.0.1 demo.test.dev 

确保在文件开始处定义主机名对我有所帮助。 默认情况下,行127.0.0.1 localhost已经在开始,只需在同一行添加你的条目。

我有这个相同的问题,并最终意识到我在同一行上有两次相同的主机条目:

例如

 127.0.0.1 localhost host1 host2 host3 host4 host5 host1 host6 

我删除了同一个主机的第二个实例(在上面的例子中 – host1) – 事情马上加快了。

当我发现这一点时感觉有点傻,但是当你在同一行上有10个长的主机名,并且经常添加/删除时,它可能被忽略。

为我做的诀窍是增加

 127.0.0.1 locahost 

在主机文件的第一行。

从我所有的虚拟主机中,只有那些使用数据库的虚拟主机很慢。 我相信这是因为查找“localhost”进行数据库连接的过程减慢了速度,因为我只为虚拟主机添加了地址,而不是“localhost”。 现在又快又好了。 🙂

我也遇到了这一堆。 我在两行上定义了一堆虚拟主机,一个用于IPv4,一个用于IPv6。 移动主机我试图解决在列表中的第一个速度。

 127.0.0.1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev ::1 faster.example.dev host1.example.dev host2.example.dev host3.example.dev host4.example.dev host5.example.dev host6.example.dev 

我遇到了同样的问题,并发现这是由于在我的LAN上启用了IPv6,但在我的networking和我的ISP之间没有正确configurationIPv6。 显然,当客户端同时使用时,IPv6 DNS服务器优先于IPv4 DNS。 客户端花了几秒钟(每次尝试)都发现IPv6 DNS无法访问或丢失,然后回退到IPv4 DNS。

注意:我正在使用Windows和XAMPP,但是在研究这个问题的时候,很多人在Windows和Mac上都遇到了同样的问题。 任何人发现这个问题的答案,因为我花了几个小时试图find一个适合我的解决scheme:

对于同一个问题,我尝试了很多解决scheme,包括将所有主机放在同一个线路上,删除多余的主机和虚拟主机,还包括IPv6线路 – 这些都不是成功的。

到目前为止 ,唯一的解决scheme似乎是为我工作的是所有解决scheme的组合:

  • 改变我从mysite使用的域名。 本地到mysite。 dev 。 灵感来自@ Cleverlemming的回答。
  • 包括IPv6线路。
  • 删除冗余虚拟主机和主机(我评论他们)。

在我的主机文件我的主机目前在不同的线路,到目前为止这个问题似乎是固定的。

祝你好运,任何人试图解决这个问题,如果任何人有任何信息添加请这样做 – 这似乎是一个问题,影响了很多没有单一的已知原因或解决scheme的人。

在我的情况下,减速是因为/ etc / hosts中的一些条目在我的虚拟主机conf中不再使用。