如何在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中不再使用。