2026.06.25 12:32:25
|
views: 22
今天在做本地测试的时候,发现了之前一直都没有解决的问题,就是本地开发的网站为何加载那么慢。
找了一圈终于找到问题了,原来是因为我的本地环境在 macOS 上 mDNS 超时的问题。这导致有时候代码运行本身只需要不到 1 毫秒,但是访问网站的时候就会卡 4-5 秒。测试了之后,终于发现真凶了。
我用的是 FlyEnv 这个本地环境去做工具的本地部署。因为 macOS 上面的 mDNS 协议会先去局域网广播查找,等到超时后才会回到 /etc/hosts 里面,导致每次都要卡 5 秒。
我查找了一下,mDNS 里面默认直接走本地的域名....
IANA 保留用于测试/文档的顶级域名有这几个:
| 后缀 | 用途 | 特点 |
|---|---|---|
.test |
测试环境 | 最推荐,语义清晰 |
.localhost |
本地开发 | 会自动解析到127.0.0.1,甚至不用配 hosts |
.example |
文档示例 | 用于文档/教程中举例 |
.invalid |
无效域名 | 用于测试"故意失败"的场景 |
本地开发最常用的是 .test 和 .localhost。其中 .localhost 最省事,macOS 天生就把它指向 127.0.0.1,连 /etc/hosts 都不用配。
所以我果断把之前的开发后缀 .local 直接改成了 .test 或者 .localhost。这样子 macOS 天生就会把它指向 127.0.0.1,连 /etc/hosts 都不用配,速度就是最快的了。
测试方法:
curl -s -o /dev/null -w "DNS: %{time\_namelookup}s\\n" http://你的任意站点.local/
修改之后的测试:
curl -s -o /dev/null -w "DNS: %{time\_namelookup}s\\n" http://你的任意站点.localhost/