写点什么

HTTP/2 推送之难,远超想象

  • 2017-06-11
  • 本文字数:11023 字

    阅读完需:约 36 分钟

在讨论页面加载性能问题时,我经常听到有人说“HTTP/2 推送可以解决这问题”,但我对这个技术的了解不多,于是打算深入研究一下。

HTTP/2 推送远比我最初想象中更复杂,也更底层,但最让我措手不及的地方在于,这种技术在不同浏览器上的表现竟然有这么大的差别,本来我还觉得这技术已经足够成熟,可以在生产环境中使用了。

本文并不是那种认为“HTTP/2 推送一无是处”的吐槽文。我觉得 HTTP/2 推送真的很强大,以后还会更加完善,但并不算能解决所有问题的万灵药。

完整的 Fetch 路径

在页面和目标服务器间,横亘着一系列可能拦截请求的缓存和其他机制:

当人们希望尝试或向别人解释 Git 或其他看得见的东西时,通常会使用类似上面这样的流程示意图,在本来就懂的人看来,这样的示意图一目了然,但不懂的人往往会一头雾水。如果你也有这种感觉,那要先说声抱歉了!希望下文能帮你更好地理解。

HTTP/2 推送的工作原理

  • 页面:嘿 example.com,能把你的首页让我看一看吗?
  • 服务器:没问题!哦,在我给你发送首页的同时,还需要发送一些样式表、图片、JavaScript,以及一些 JSON。
  • 页面:额,好的。
  • 页面:我已经看到 HTML 了,但貌似还需要一个样式……哦,好像你已经发过来了,酷!

服务器响应请求时,可以顺便包含额外的资源。例如包含一系列请求报头,这样稍后浏览器就知道如何匹配不同报头。这些额外的资源位于缓存中,当浏览器请求的资源与缓存中的匹配时即可直接从缓存中获取。

这种方法可以改善性能,原因在于可以提前发送可能需要的资源,而不需要等待浏览器索取,因此可以提高页面加载速度。

多年来我对 HTTP/2 推送的了解仅限于此,听起来挺简单,但魔鬼往往隐藏在细节中……

任何东西都可以使用推送缓存

HTTP/2 推送是一种底层网络功能,用到网络栈的任何东西都可以使用该功能。但只有确保一致性以及可预测性,才能发挥最大作用。

我试着推送一些资源,并通过下列方式收集:

  • fetch()
  • XMLHttpRequest
2017-06-11 17:164758
用户头像

发布了 283 篇内容, 共 124.1 次阅读, 收获喜欢 63 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB ALTER DATABASE语句

YashanDB

数据库

怎样利用YashanDB的存储过程优化查询性能

数据库砖家

怎样利用YashanDB的弹性扩展确保服务持续可用

数据库砖家

怎样实现YashanDB的高可用性架构设计?

数据库砖家

从京东的新AI计划,看到电商与大模型的新连接

脑极体

AI

利用YashanDB构建机器学习模型

数据库砖家

怎样实现YashanDB与其他工具的无缝集成?

数据库砖家

通过YashanDB支持深度学习模型的训练

数据库砖家

YashanDB ALTER FUNCTION语句

YashanDB

数据库

通过YashanDB集成云计算服务提升灵活性

数据库砖家

传帮带 人才梯队建设经验总结(1)

万里无云万里天

人才培养 工厂运维

实用AI代理提示工程指南

qife122

机器学习 AI代理

通过YashanDB实现数据集成平台的技术分析

数据库砖家

怎样利用YashanDB支持API迈向未来

数据库砖家

通过YashanDB进行API的性能测试

数据库砖家

传帮带 人才梯队建设经验总结(2)

万里无云万里天

人才培养 工厂运维

工业管理 团队建设经验总结(1)

万里无云万里天

工业 工厂运维

【免费开源】基于 STM32F4 的四轴飞行器设计与实现——从零开始到成功起飞(项目源码打包分享)

申公豹

嵌入式

C#记录类型与集合的深度解析:从默认行为到自定义比较

qife122

C# 不可变集合

工业设计 自控设计经验总结(1)

万里无云万里天

设计师 工厂运维 工业设计

机器学习数据收集优化技术解析

qife122

机器学习 算法优化

怎样利用YashanDB实现企业数据的自动化管理

数据库砖家

怎样通过YashanDB优化服务的响应时间

数据库砖家

运用YashanDB数据库构建智能分析平台的方法

数据库砖家

工业数字化 信息化经验总结(1)

万里无云万里天

数字化转型 信息化 工厂运维

PromptPilot全模型兼容,数据产品能力上新!

新消费日报

苹果紧急修复针对Chrome用户的零日漏洞

qife122

零日漏洞 系统更新

AI自我提升的五种技术路径

qife122

人工智能 自动化

怎样进行YashanDB性能监控与优化?

数据库砖家

怎样通过YashanDB支持实时监控需求

数据库砖家

怎样在YashanDB中实现负载均衡?

数据库砖家

HTTP/2推送之难,远超想象_Google_Jake Archibald_InfoQ精选文章