报错是这么冒出来的。换掉统计服务后,head 里还留着三条 dns-prefetch 和 preconnect,指向已经不解析的域名,Lighthouse 报 DNS 解析失败,实际首屏多等了两百毫秒。

真正麻烦的地方在于,几个原因的现象几乎一样。主题里硬编码了第三方域名,服务下线后没人清理。少数情况下是失效域名解析要等超时才返回,浏览器会短暂阻塞。

不容易想到的是,同一域名既有 preconnect 又有 dns-prefetch,重复请求。

第一件事是找出 head 里的预连接地址

curl -s https://www.example.com/ | grep -oE 'rel="(dns-prefetch|preconnect)"[^>]*'

然后确认这些域名是否还能解析

for d in cdn.old.com stat.old.com; do dig +short $d; done

从主题里移除失效条目

add_filter('wp_resource_hints', function($h){ return array_filter($h, fn($u) => strpos($u, 'old.com') === false); }, 10, 1);

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

别只看报错消失,验证要多做一步。head 里只剩仍在使用的域名,Lighthouse 不再报解析失败,首屏时间回到两百毫秒以内。

这里还有个坑。预连接数量别贪多,超过四条反而互相抢连接,失效的域名更要第一时间清掉。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189