AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

架构师训练营二期作业

老姜

千万不能让程序员给娃娃取名字

码农神说

程序员

为什么坐车会晕车呢

石云升

生活,随想 日常思考 晕车

架构师训练营第2周学习总结

Season

极客大学架构师训练营

618你的系统顶住了么?系统发生重大灾难难道只能“删库跑路”?

punkboy

架构师训练营 - 第二周架构师实现自己架构的主要手段

zcj

极客大学架构师训练营

依赖倒置和案例

王锟

给行动找个理由

Neco.W

行动派 决策

哪些框架是遵循依赖倒置原则的?

朱月俊

小师妹学JVM之:GC的垃圾回收算法

程序那些事

JVM 小师妹 JIT GC 签约计划第二季

依赖倒置原则

极客李

产品视角看推荐算法

峰池

人工智能 算法 产品经理 推荐算法

做一个有原则的码农可好?

Dawn

极客大学架构师训练营

第二周学习总结

武鹏

用接口隔离原则优化 Cache 类的设计

朱月俊

架构师训练营-第二章-依赖倒置原则&接口隔离原则

而立

极客大学架构师训练营

ARTS打卡Week 04

teoking

ios LeetCode ARTS 打卡计划

第二周作业

武鹏

这也太拧巴了吧?结局意想不到

非著名程序员

程序员 程序人生 提升认知

一个包子铺看懂 I/O 模型演变

小眼睛聊技术

Java 程序员 架构 后端 nio

数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

墨天轮

数据库

“麻烦”的处理流程

zhoo299

随笔杂谈

第二次作业

朱月俊

第二次作业总结

朱月俊

架构师训练营第二章课后作业

叮叮董董

基本的面向对象原则(Basic OO principles)

旭东(Frank)

编程思维 极客大学架构师训练营

什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

朱月俊

老大吩咐的可重入分布式锁,终于完美的实现了!!!

楼下小黑哥

Java redis 分布式锁

架构师训练营第二周

小树林

品软件架构原则模式之美

老姜

架构师训练营第二章总结

叮叮董董

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