dns-prefetch仅解析DNS,开销小、兼容好,适用于确定会访问但暂不加载的第三方域名;preconnect则完成DNS、TCP及TLS握手,代价高但收益直接,适用于即将高频加载的关键第三方资源。
两者都用来优化资源加载,但作用阶段和适用场景不同。
它只做 DNS 查询,不建立 TCP 连接,开销小、兼容性好(连 IE11 都支持)。适合那些你确定会访问、但暂时不会加载资源的第三方域名,比如 CDN 域名、统计脚本域名、广告或社交分享接口域名。
中,例如:
它不仅查 DNS,还会完成 TCP 握手和 TLS 协商(如果是 HTTPS),代价更高,但收益也更直接。适合页面中明确要加载资源、且对首屏性能影响大的第三方源,比如字体托管服务(fonts.googleapis.com)、核心 API 域名、主 CDN。
,例如:
crossorigin 属性使用(尤其涉及 CORS 资源时),避免预连接被浏览器忽略如果只是“将来可能会请求”,优先用 dns-prefetch;如果“接下来 1 秒内就要 fetch 字体、JS 或图片”,就该用 preconnect。实际项目中常组合使用:先 dns-prefetch 备

不复杂但容易忽略。