所以预加载https://w3c.github.io/preload/可以通过声明性标记定义为标签
<link rel="preload" href="/styles/other.css" as="style">
或作为 HTTP 标头
Link: <https://example.com/other/styles.css>; rel=preload; as=style
但是两者之间的权衡是什么?在什么情况下应该使用标签,反之亦然?
所以预加载https://w3c.github.io/preload/可以通过声明性标记定义为标签
<link rel="preload" href="/styles/other.css" as="style">
或作为 HTTP 标头
Link: <https://example.com/other/styles.css>; rel=preload; as=style
但是两者之间的权衡是什么?在什么情况下应该使用标签,反之亦然?
嗯,这应该是显而易见的。如果它在 HTML 中,则需要解析 HTML。这发生在解析标头之后,因为您首先需要标头知道您正在解析 HTML(而不是,比如说,image/jpeg
或text/plain
)。
这实际上会导致实践中的性能差异吗?与大多数性能问题一样,这通常很难说清楚。要点仍然是将 I/O 与执行分开,这两种方法都是如此。
CDN 和代理通常使用标头进行各种访问优化和缓存。这显然比解析 HTML 便宜,所以也许我们会看到一些建议 :) 例如,我可以想象一个代理在获得 HTTP 标头之前基于 HTTP 标头启动预加载 - 只需通过观察什么样的请求的常见模式通常意味着什么样的预加载。当预测合适时,它可以很好地消除获取此信息的延迟,尤其是在高延迟连接和长时间运行的请求上。