背景介绍
server push是http2.0当时一个比较亮眼的点,18年就尝试过。现在已经是2023年了,不知道目前server push在国内的普及率是多少,是否过半?如果小伙伴打算尝试server push,那这篇文章,将是一篇劝退文,因为,此次我带来了谷歌有关在将来去掉server push的消息。
正文
发表于2022年8月18日,更新于 2022年10月14日
作者:Barry Pollard( Google web性能开发者)
接着之前内容继续,在chrome 106和其他chromium版本的浏览器的后续版本,默认将不再支持HTTP/2的server push功能。
为什么取消
HTTP/2让网站能提前发送页面资源,而不再需要等到需要时再发送。但是正如Jake Archibald 之前文章写到的,这个特性有很多问题,而且很难达到收益。目前看只有1.25%的使用率。
HTTP/2 Server Push的功能分析报告(Chrome, Akamai)有很多,都没有看到清晰的性能收益,甚至在很多案例中是性能下降。
在HTTP/3中没有采用 server push,尽管在标准中采纳了。对于很多使用http3的网站来说,并非采用push功能。最近再次分析得出,我们发现1.25%降到了0.7%。
HTTP/2 Server Push的替代方案
103 Early Hints 本身错误少,优势多,不亚于server push。和server推送资源的方式不同的是,103 early hints发送“hints”给浏览器,能立刻让浏览器享受益处。这相当于把决定是否加载和何时加载的决定权交给了浏览器,而且浏览器还能根据http缓存决定是否使用缓存。
预拉取关键资源是另一个方案,允许网站和浏览器在页面加载时就共同提前预先加载关键资源。当然,前提还是必须首先加载网页本身,所以速度肯定不如server push快,也比不上early hints。但也有好处,不会延迟关键的页面资源,同时也可以配合上其他方案。
注意: 尝试尽早加载资源的方案可能导致性能下降,应该适量使用。浏览器擅长做出最佳选择,但是在一些案例也有一小点好处,注意好处只是“一小点”。
结论
web应该尝试新事物,对于不适用的也要丢弃。尽管推送听起来很强大,但现实很骨感。不过,我们从中学到很多东西,比如103的early hint。
参考链接
- All deprecations and removals in Chromium
- ChromeStatus entry: Remove HTTP/2 push
- Intent to Remove: HTTP/2 and gQUIC server push
- Chromium issue: Turn HTTP/2 Push off by default
总结
以上便是翻译的内容,web时代强烈依赖网络,h2的server push曾带来一丝光亮,马上又退去。不过br和h3也很值得期待。