使用 rel=”preconnect” 提前建立网络连接并提高性能

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

Milica Mihajlija:

<link> 中添加 rel=preconnect 会通知浏览器您的页面打算与另一个域名建立连接,并且您希望该过程尽快开始。因为设置过程在浏览器请求资源之前就已经完成,所以资源将加载得更快。

文章中的图形很好地说明了为什么将其作为提高性能的明显选择。

几年前,Robin 对所有这类内容进行了 很好的总结。看起来现在最佳实践是使用这两个方法。

<link rel="preconnect" href="http://example.com">
<link rel="dns-prefetch" href="http://example.com">

对于您加载文档的主域名之外的所有域名。

快速查看一下 CSS-Tricks 资源,我得到

secure.gravatar.com
static.codepen.io
res.cloudinary.com
ad.doubleclick.com
s3.buysellads.com
srv.buysellads.com
www.google-analytics.com

这将在每个请求的网站上,在数据包的前几个数据包中额外添加 14 个 <link> 标签。这听起来像是性能的提升,但我想在不假思索地将其添加进去之前进行测试。

Andy Davies 最近做了一些实验:

那么预连接能产生什么区别呢?

我使用 HTTP Archive 查找了几个使用 Cloudinary 作为其图像的网站,并对其进行了未修改的测试,然后又注入了预连接脚本进行了测试。每个测试都进行了九次运行,使用 Chrome 模拟移动设备以及 Cable 网络配置文件。

第一个网站 上,视觉效果有了明显的改善,主要背景图像的加载速度比未修改的网站(底部)提前了半秒以上(顶部)。


这些东西让我想起了 instant.page刚刚发布了 v2 版本),这是一个花哨的小脚本,可以根据交互预加载内容。它现在是一个浏览器扩展程序(FasterChrome),我一直在试用。我不能说我注意到很大的区别,但我几乎总是使用快速的互联网连接。