今天遇到一个问题,某站网页加载很慢。

ChromeF12查看Network,发现加载网页html就要1s多,其他的图片资源反而加载时间很短。

写测试html,加载100ms以内。

测试php,加载100ms以内。

测试查询数据库,加载1s多。

反复测试发现连接数据库本身就要1s多,很奇怪。

谷歌加百度之,修改数据库连接文件参数localhost为127.0.0.1,连接时间立刻掉了下来= =

cmd,ping localhost,显示居然是在ping ::1,立刻打开hosts文件,修改之,问题解决


问题所在:hosts文件中,localhost没有绑定在127.0.0.1上,数据库连接locahost立刻就去监听::1了,1s后才会转到127.0.0.1上。(::1是IPv6的东西)

解决方案:

            方法一:数据库连接文件修改localhost为127.0.0.1

            方法二:修改hosts文件,绑定localhost在127.0.0.1上,同时确保注释掉绑定localhost在::1上(#所在行为注释)

 127.0.0.1 localhost
# ::1 localhost

-------------2017.12.2--

win10默认IPv6解析优先级高于IPv4优先级,所以更改hosts文件也还不行,需要手动修改优先级。

解决办法有:

1 修改注册表,

2 cmd或Powershell修改优先级。

    首先以管理员模式打开cmd或者Powershell

netsh int ipv6 set prefix ::/96 50 0
netsh int ipv6 set prefix ::ffff:0:0/96 40 1
netsh int ipv6 set prefix 2002::/16 35 2
netsh int ipv6 set prefix 2001::/32 30 3
netsh int ipv6 set prefix ::1/128 10 4
netsh int ipv6 set prefix ::/0 5 5
netsh int ipv6 set prefix fc00::/7 3 13
netsh int ipv6 set prefix fec0::/10 1 11
netsh int ipv6 set prefix 3ffe::/16 1 12

 ping localhost 返回127.0.0.1即成功。