AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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:164416
用户头像

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

关注

评论

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

8个程序员常用的开发工具,各位老铁请收好!

伤感汤姆布利柏

低代码 开发工具

SQL HAVING 子句详解:在 GROUP BY 中更灵活的条件筛选

小万哥

MySQL 数据库 程序员 sql 后端开发

比亚迪面试,全程八股!

王磊

Java 面试

程序员的护城河是什么 ?

代码生成器研究

【重磅合作】九章云极DataCanvas公司与生态伙伴强强联手,构建人工智能强生态!

九章云极DataCanvas

PingCAP 荣获亚马逊云科技 2023 年度合作伙伴奖项

编程猫

一款LED段码显示屏驱动芯片方案

芯动大师

Whimsical:在线协作必备工具!一文弄懂功能 | 使用场景 | 优势 | 替代软件推荐

彭宏豪95

效率工具 科技 在线白板 办公软件 在线协作

srm供应商、在线采购及询比价管理系统(源码)

金陵老街

探索低代码之路

互联网工科生

软件开发 低代码 JNPF

程序员,你会尝试一门新的编程语言吗?

代码生成器研究

编程到底难在哪里?

代码生成器研究

如何获取淘宝/天猫添加到购物车 API 接口

技术冰糖葫芦

API】

编程需要天分吗?

代码生成器研究

渗透率不到5%,低代码怎么就不受企业待见

代码生成器研究

教育行业如何用技术推动用户增长

Onegun

小程序 在线教育 在线学习

视频素材传输慢?大文件传输软件一步到位

镭速

大文件传输 大文件传输软件

滴滴、阿里云、语雀相继宕机,损失巨大,软件的高可用失效了么?

极狐GitLab

阿里云 高可用 滴滴 geo

“通识+产业”大模型,“Alaya元识”的赋能路径

九章云极DataCanvas

瑞云科技参与《数字孪生世界白皮书》编写,实时云渲染助力数字孪生

3DCAT实时渲染

数字孪生 云渲染 实时渲染

探索DevOps文化

FunTester

2D智能化标注,MatrixGo平台的宝藏功能

澳鹏Appen

数据标注 交互式标注 2D标注

在线协作新选择!5款风靡全球的白板软件盘点。

彭宏豪95

职场 科技 在线白板 在线协作 效率软件

华为全屋智能5.0,无为而“智”

脑极体

AI

低代码开发前景如何,大家都真的看好低代码开发么?

代码生成器研究

低代码技术之争:表单驱动和模型驱动,谁更能代表未来的方向?

代码生成器研究

如何整合淘宝/天猫购物车 API?

技术冰糖葫芦

API 文档

一切为了应用!九章云极DataCanvas大模型系列成果重磅发布!

九章云极DataCanvas

TableAgent:首个国产可私有部署的企业级Code Interpreter

九章云极DataCanvas

Raft理论篇

Geek_44385e

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