文章内容

2025/12/8 0:16:39,作 者: 黄兵

dns-prefetch 的对页面的优化

页面有一个资源:

<script src="https://cloud-1.us-west.obs.markbot.net/js/plugins-96178d2fd0a7f47cc9ae.bundle.js"></script>

如果需要尽快加载,我们可以这样做:

针对资源 URL https://cloud-1.us-west.obs.markbot.net/...,我们直接提取其主机名(Domain Name)来编写 dns-prefetch

应该这样写:

<link rel="dns-prefetch" href="//cloud-1.us-west.obs.markbot.net">

或者(如果网站只使用 HTTPS):

<link rel="dns-prefetch" href="https://cloud-1.us-west.obs.markbot.net">

💡 关键点解释

  1. 提取域名: DNS 预解析(DNS Prefetching)只需要域名,不需要具体的路径(即不需要 /js/plugins... 那部分)。

    • 完整 URL: https://cloud-1.us-west.obs.markbot.net/js/plugins-96178d2fd0a7f47cc9ae.bundle.js

    • 主机名: cloud-1.us-west.obs.markbot.net

  2. 协议写法 (// vs https://):

    • // (推荐): 这叫做“协议相对 URL”。如果您的网站同时支持 HTTP 和 HTTPS,使用 // 会让浏览器自动匹配当前页面的协议,这通常是最稳妥的写法(例如您的 Google Analytics 示例就用了这个)。

    • https://: 如果您的站点是全站 HTTPS,直接写死协议也是完全可以的。

🚀 进阶建议:考虑使用 Preconnect

如果这个 .js 文件对您的页面渲染非常重要(通常 bundle.js 都是核心文件),您可以考虑使用 preconnect 来替代或配合 dns-prefetch

  • DNS-Prefetch: 只解析域名 IP(仅 DNS 查询)。

  • Preconnect: 解析域名 + 建立 TCP 连接 + 完成 TLS 握手(更彻底的预连接)。

更高效的写法:
<link rel="preconnect" href="//cloud-1.us-west.obs.markbot.net">
<link rel="dns-prefetch" href="//cloud-1.us-west.obs.markbot.net">

(注意:dns-prefetch 作为后备方案保留,以兼容不支持 preconnect 的旧浏览器)



分享到:

发表评论

评论列表