Chrome以及其他Chromium浏览器的下一个版本,便会默认停用HTTP/2服务器推送,Google表示,该功能好坏参半,并没有达到当初设想明显的性能提升,甚至在许多情况还可能导致性能下降,因此是时候抛弃HTTP/2服务器推送,采用更新的EarlyHints机制。
HTTP/2服务器推送让网站可以主动发送页面需要的资源,而非被动等待浏览器请求资源,但是这仅是理想上的情况,在实际应用上,HTTP/2服务器推送性能优势通常很难实现,因此最后也没有被大量采用,仅有1.25%的网站使用了这项功能。
HTTP/2服务器推送整体使用上好坏参半,没有明显的性能增加,还会在许多情况下造成性能下降,另外,即便推送功能包含在规范中,HTTP/3服务器和客户端也大多没有实例,因此对于使用较新的HTTP/3网页,推送功能已经有效率地被淘汰掉,提供支持的比例也从原本的1.25%,现在已经下降到了0.7%。
淘汰HTTP/2服务器推送,取而代之的是EarlyHints,Google提到,这是一个比较不容易出错的机制,具有跟推送相同的优点,但是缺点少得多。EarlyHints跟服务器主动推送资源不同,该功能只会先向浏览器发送资源提示,浏览器可以控制是否需要这些资源,因为相同的资源可能已经存在于HTTP缓存。
当然预加载资源也是另一种替代方案,页面和浏览器可以共同协调,在早期抢先加载关键资源,虽然这个方案需要确实发送页面本身,因此不会如服务器推送或是EarlyHints般快速,但是其具有不延迟关键页面资源的额外好处。
Google也提醒,任何尝试提前加载资源的解决方案,都可能适得其反造成性能下降,因此开发者必须适度使用,而且浏览器通常也非常善于做出正确的选择,所以只会在部分有限的情况,才能稍微改善性能表现。