尽管每个人的目标都是减少 Web 性能预算,但仍然需要使用第三方服务。使用这些服务时,“DNS查找“时间可能会消耗掉预算的很大一部分,具体取决于服务的数量。这些负载会影响页面速度的各个方面,包括首次内容绘制 (FCP)。
这两个概念的目的是为了优化第三方的连接时间。在了解这两个概念的区别之前,有必要先了解在发出第三方请求时究竟发生了什么:
- 域名解析后即可获得IP地址。
- 与服务器建立连接。
- 连接已加密,以确保安全。
对于每个第三方连接,都会重复此层次结构。这就是 preconnect 和 dns-prefetch 之间的区别所在。
- 预连接: 确保上述所有三个步骤均已预先配置。
- DNS 预取: 仅起到第一步将域名转换为IP地址的作用。
如您所见,预连接更全面、更有益。然而,一切都是有代价的。对所有连接使用预连接可能会对页面的优化产生负面影响。因此,您您应该仅对关键连接使用预连接,对所有其他第三方连接使用 dns-prefetch.
使用总结
根据以上信息,下面简要总结一下它们的用法:
<link rel="preconnect" href="https://third-party-example.com">
<link rel="dns-prefetch" href="https://third-party-example.com">
浏览器兼容性
在讨论它们的用法时,还必须提到浏览器兼容性。这两个密切相关的概念得到了现代浏览器的广泛支持,但它们的用法并不完全重叠。 大约 97% 的浏览器支持 Preconnect,而 83% 的浏览器支持 dns-prefetch(截至 2024 年 XNUMX 月).
对 Web 性能预算的贡献
- 预连接可以带来总体速度提升 100-500ms.
- DNS-Prefetch 可以通过以下方式加速每个连接 20-120ms.
我们计划进行自己的测试以提供更多令人满意的本地示例。
最后,我要推荐并赞扬 Ceyhun Enki Aksan 的博客,这对我准备这篇文章的理解有很大帮助: Ceyhun Enki Aksan 的博客。