使用 可以提前建立与跨域资源所在域名的 TCP 连接、TL..."/>

HTML 如何使用 提升跨域资源速度

2次阅读

可提前建立跨域域名的 DNS、TCP 和 TLS 连接以降低延迟;需按 CORS 需求决定是否添加 crossorigin 属性,仅对关键第三方域名使用,并可配合 dns-prefetch 和 preload 优化。

HTML 如何使用 提升跨域资源速度跨域 资源速度 ”>

使用 可以提前建立与跨域资源所在域名的 TCP 连接、TLS 握手(如 HTTPS)和 DNS 查询,从而减少后续请求的真实加载延迟。但要注意:crossorigin 属性不是 preconnect 的合法值,不能写成 crossorigin="" —— 这会导致 HTML 解析错误或被 浏览器 忽略。

正确写法:rel=”preconnect” + crossorigin(仅当需要 CORS 时)

如果目标域名资源(如字体、脚本、图片)需要跨域请求且涉及 CORS(例如通过 fetch() 加载或 Web Font),则必须加上 crossorigin 属性(可为空字符串或 "anonymous"),否则预连接可能失败或不生效:

若目标资源 ** 不涉及 CORS**(比如纯静态图片、公开 CDN 上的 JS/CSS 且你确认服务端未强制校验 Origin),可省略 crossorigin

只对关键第三方域名使用,避免滥用

浏览器对 preconnect 有并发限制(通常 6 个左右),且每个 preconnect 会占用资源。应只针对真正会在页面中加载的、高优先级的跨域源使用:

立即学习 前端免费学习笔记(深入)”;

  • 常见目标:CDN 域名(cdn.jsdelivr.net)、字体服务(fonts.googleapis.com, fonts.gstatic.com)、分析脚本(www.google-analytics.com
  • 不要为未使用的域名或低优先级资源添加(如广告、埋点备用域名)
  • 避免对同一域名多次声明(重复无效)

配合 dns-prefetch 和 preload 使用更稳妥

preconnect 开销较大,适合确定要加载且支持 HTTPS 的域名;对仅需 DNS 查询的场景,可用更轻量的 dns-prefetch

  • (仅解析 DNS)
  • (已知将加载字体,需完整连接)
  • 对关键资源(如首屏字体、核心 JS),再叠加 确保尽早获取

验证是否生效

在 Chrome DevTools 的 Network 面板中,筛选 Other 类型,查找 domainlookupconnectStart 等时间线。若看到 preconnect 条目且耗时显著低于后续实际请求,说明成功。也可在 Application → Frames → Frame → Manifest 中查看预连接状态(部分版本支持)。

text=ZqhQzanResources