Memos / #76
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/

$ cd /memos