dns-prefetch 必须用 ,仅支持 // 开头的纯域名,须置于 最前,仅对跨域第三方有效,错则静默失效。

dns-prefetch 标签必须用 link,不是 meta
所有写成 <meta rel="dns-prefetch"> 或 <meta name="dns-prefetch"> 的用法,浏览器直接忽略,且不报错——你查 Network 面板根本看不到 DNS 查询记录。规范只支持 <link rel="dns-prefetch" href="//domain.com"> 这一种语法,Chrome、Firefox、Safari、Edge 全部一致。
href 必须以 // 开头,且仅含域名
浏览器只从 href 中提取主机名,其余内容全丢弃。格式错一点,整个标签就静默失效:
- ✅ 正确:
<link rel="dns-prefetch" href="//cdn.example.com"> - ✅ 可接受(HTTPS 页面更稳):
<link rel="dns-prefetch" href="https://fonts.googleapis.com"> - ❌ 错误:
<link rel="dns-prefetch" href="https://cdn.example.com/js/app.js">(含路径) - ❌ 错误:
<link rel="dns-prefetch" href="cdn.example.com">(缺//,被当成本地路径) - ❌ 错误:
<link rel="dns-prefetch" href="http://api.example.com">(HTTPS 页面中 Safari 等可能跳过)
必须放在 最前面,早于首个外部资源
浏览器流式解析 HTML,dns-prefetch 一读到就排队执行。放晚了,首屏 JS/CSS 请求早就发出去了:
- ✅ 理想顺序:
<meta charset>→<title></title>→<link rel="dns-prefetch">× N → 首个<link rel="stylesheet">或<script src></script> - ❌ 无效位置:塞在
里、插在<script></script>后面、用 JS 动态创建并插入(document.createElement('link')) - ⚠️ 注意:如果前面堆了大量 CSS/JS,DNS 查询可能被首屏关键请求抢占调度优先级,Safari 尤其保守
只加确定会用的第三方跨域域名,别碰同源和备用链
每个 dns-prefetch 都触发一次真实 DNS 查询,浏览器并发上限通常为 6~10 个。无效查询不仅白耗资源,还可能挤占真实请求队列:
- ✅ 值得加:
//cdn.example.com(图片/JS/CSS 真实加载)、//api.example.com(首屏后立即fetch)、//hm.baidu.com(统计 SDK 初始化必发) - ❌ 不该加:
//your-site.com(同源,DNS 缓存已共享)、//admin.example.com(子域共享主域缓存)、//ad.doubleclick.net(不稳定、常被拦截) - ⚠️
//fonts.googleapis.com和//fonts.gstatic.com是两个独立域名,必须分别声明;通配符//*.example.com不支持
Other 类型,找带 domainlookup 字段的条目——但前提是,你真在后续 JS 或懒加载中发起了对那个域名的请求。写错格式、放错位置、加了没用的域名,三者任一出问题,它就彻底静默,连日志都不会留。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











