或通过 html:
<link href='https://fonts.gstatic.com' rel='preconnect' crossorigin>
在解析响应内容之前使响应可用,使用标头是否有速度优势?
或通过 html:
<link href='https://fonts.gstatic.com' rel='preconnect' crossorigin>
在解析响应内容之前使响应可用,使用标头是否有速度优势?
使用响应标头会稍微快一些,并且可能会导致预连接更快,但我相信这也取决于浏览器的实现和网络条件。
如果您考虑 HTML 响应是如何到达客户端的,它会先查看标头,然后再查看正文。一旦它看到正文,它需要开始解析 HTML 并通过一些标记,然后才能看到你的<link>
. 在慢速连接上,在解析标记之前接收到标头后可能会有很大的延迟。
谷歌开发者的网站https://web.dev/preconnect-and-dns-prefetch/提到:
在 HTTP 标头中指定预连接提示的一个好处是它不依赖于被解析的标记,并且它可以由对样式表、脚本等的请求触发。例如,Google Fonts 在样式表响应中发送一个 Link 标头,以预连接到托管字体文件的域。
preconect 的目的是允许浏览器在 HTTP 请求实际发送到服务器之前建立早期连接。这包括 DNS 查找、TLS 协商、TCP 握手。这反过来又消除了往返延迟并为用户节省了时间。
即使在 html 中,您也可以在 head 标签中添加 preconnect 值。如果将它添加到 body 标记中将没有任何意义,因为它只会充当渲染阻塞元素。