继之前的公告之后,Chrome 106 及其他基于 Chromium 的浏览器的后续版本中将默认停用对 HTTP/2 服务器推送的支持。
为什么要移除此版块?
HTTP/2 服务器推送允许网站主动发送网页所需的资源,而不是等待请求这些资源。不过,正如 Jake Archibald 之前所写,这种做法存在问题,而且性能优势通常很难实现。因此,此功能的使用率不高,只有 1.25% 的 HTTP/2 网站在使用此功能。
对使用 HTTP/2 服务器推送进行分析的结果不尽相同(Chrome、Akamai),没有明显的净性能提升,在很多情况下还会导致性能下降。
许多 HTTP/3 服务器和客户端都未实现推送功能,即使该功能已包含在规范中也是如此。对于使用较新 HTTP/3 的大部分网站,推送功能已被有效弃用。在最近重新运行该分析时,我们发现网站的 HTTP/2 支持率为 1.25%,降至 0.7%。
HTTP/2 服务器推送的替代方案
103 Early Hints 是一种不太容易出错的替代方案,具有与推送一样的许多优点,但缺点要少得多。103 早期提示不会由服务器推送资源,而是仅向浏览器发送可能受益于立即请求的资源的提示。这样,浏览器就可以控制是否需要这些资源,例如,如果它在 HTTP 缓存中已经有了这些资源。
预加载关键资源是让网页和浏览器协同工作的另一种替代方案,以便在网页加载初期提前加载关键资源。虽然这确实需要先发送网页本身,因此速度不如服务器推送或提前提示快,但它还有一个额外的好处,即不会延迟关键网页资源(这两种解决方案都可能会出现这种情况)。
总结
网络需要能够进行尝试,并在不使用时舍弃它们。虽然推送功能的潜力听起来很棒,但在实际使用中,其问题比预想的要多。然而,我们在 103 早期提示的设计中也借鉴了 Push 的许多东西。现在,您需要完成流程,然后停止使用推送。
资源
- Chromium 中的所有废弃和移除内容
- ChromeStatus 条目:移除 HTTP/2 推送
- 移除意图:HTTP/2 和 gQUIC 服务器推送
- Chromium 问题:默认关闭 HTTP/2 推送