HTTP/2 Server Push 已事实性“死亡”,我很怀念它
💡
原文中文,约3400字,阅读约需8分钟。
📝
内容提要
作者在重构博客时尝试配置HTTP/2服务端推送以优化加载速度,但发现该功能已被主流浏览器弃用。虽然HTTP/2推送旨在减少延迟,但因缓存管理不善而失败。现有的103 Early Hints和资源提示(Preload、Prefetch)提供了更灵活的资源加载方式,尽管仍需两次往返。作者怀念HTTP/2推送的理想,但承认Web演进选择了更稳妥的方案。
🎯
关键要点
- 作者尝试配置HTTP/2服务端推送以优化博客加载速度,但发现该功能已被主流浏览器弃用。
- HTTP/1.1中需要两次往返才能获取完整页面资源,而HTTP/2推送可以减少为一次往返。
- HTTP/2服务端推送的优势在于可以在一个RTT内传送CSS/JS等资源,且可被浏览器缓存。
- 主流浏览器逐渐移除HTTP/2服务端推送功能,因其性能不佳和使用率低。
- 103 Early Hints是服务端推送的继任者,允许服务器提前发送资源提示,缩短渲染时间。
- 资源提示(Preload和Prefetch)通过声明式方式管理资源加载优先级,仍需两次往返。
- 作者最终未能为博客配置HTTP/2服务端推送,怀念其理想化的性能优化方案。
- Web演进选择了更稳妥的方案,将决策权交还给浏览器,避免了服务端推送的冗余问题。
- 尽管HTTP/2服务端推送已被弃用,但其追求极致性能的理想仍被103 Early Hints和Preload继承。
❓
延伸问答
HTTP/2服务端推送的主要优势是什么?
HTTP/2服务端推送可以在一个RTT内传送CSS和JS等资源,减少了页面加载所需的往返次数,并且这些资源可以被浏览器缓存。
为什么主流浏览器逐渐弃用HTTP/2服务端推送?
主流浏览器弃用HTTP/2服务端推送是因为其性能不佳、使用率低,并且存在更优的替代方案。
什么是103 Early Hints,它如何替代服务端推送?
103 Early Hints是一个信息性的HTTP状态码,允许服务器提前发送资源提示,帮助浏览器在等待完整HTML响应时提前下载关键资源。
资源提示(Preload和Prefetch)有什么区别?
Preload用于高优先级加载当前页面必需的资源,而Prefetch用于低优先级加载未来可能访问的资源。
作者对HTTP/2服务端推送的看法是什么?
作者怀念HTTP/2服务端推送的理想性能,认为它代表了对极致性能的追求,但也承认Web演进选择了更稳妥的方案。
HTTP/2服务端推送的生命周期是怎样的?
HTTP/2服务端推送从被视为创新特性到被全面弃用,生命周期短暂,仅有数年,成为Web性能优化历史上的一次重要实验。
➡️