继之前的公告之后,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 早期提示是一种不易出错的替代方案,具有与推送相同的许多优势,但缺点要少得多。103 早期提示不会由服务器推送资源,而是仅向浏览器发送提示,告知浏览器哪些资源可能需要立即请求。这样,浏览器就可以控制是否需要这些资源,例如,如果它在 HTTP 缓存中已经有了这些资源。
预加载关键资源是另一种方法,可让网页和浏览器协同工作,在网页加载的早期预加载关键资源。虽然这确实需要先发送网页本身,因此速度不如服务器推送或提前提示快,但它还有一个额外的好处,即不会延迟关键网页资源(这两种解决方案都可能会出现这种情况)。
总结
网络需要能够尝试各种功能,并在不再使用时将其舍弃。虽然推送功能的潜力听起来很棒,但在实际使用中,其问题比预想的要多。不过,我们从推送中学到了很多,这些经验都用于设计 103 早期提示。现在,您需要完成流程,然后停止使用推送。
资源
- Chromium 中的所有弃用和移除内容
- ChromeStatus 条目:移除 HTTP/2 推送
- 移除意图:HTTP/2 和 gQUIC 服务器推送
- Chromium 问题:默认关闭 HTTP/2 推送