10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

为什么手机操作系统开始向多端融合方向发展

InfoQ IT百科

手机硬件性能的发展主要受哪几方面制约

InfoQ IT百科

【高并发】为何在32位多核CPU上执行long型变量的写操作会出现诡异的Bug问题?看完这篇我懂了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

终于有人讲明白了!原来这才是全球低时延一张网技术

华为云开发者联盟

音视频 华为云 实时音视频 低时延

你知道Java是如何解决可见性和有序性问题的吗?

爱好编程进阶

Java 面试 后端开发

18张图,详解SpringBoot解析yml全流程

码农参上

springboot 配置文件 4月月更

LAXCUS分布式操作系统冗余容错之节点篇

LAXCUS分布式操作系统

分布式系统 冗余 集群容灾

如何优化前端页面的LCP?

BUG侦探

前端 性能 网页指标

不同研发协作模式在云效中的应用

阿里云云效

云计算 阿里云 云原生 研发 研发协作

为什么switch里的case没有break不行

爱好编程进阶

Java 面试 后端开发

观测云登陆阿里云计算巢,共建ISV新生态

观测云

可观测性 可观测

netty系列之:netty中常用的字符串编码解码器

程序那些事

Java Netty 程序那些事 4月月更

你必须懂也可以懂的微服务系列三:服务调用

爱好编程进阶

Java 面试 后端开发

手机软硬件协同很重要吗?

InfoQ IT百科

未来的手机操作系统在智能化上会有哪些突破

InfoQ IT百科

洞见科技首批通过央行国家金融科技测评中心「联邦学习」产品评测,实现「MPC+FL」金融应用双认证

洞见科技

联邦学习 隐私计算 多方安全计算

华为18级大牛整理总结:微服务设计和分布式服务框架原理实践文档

爱好编程进阶

Java 面试 后端开发

诚邀报名丨首期OpenHarmony开发者成长计划分享日

OpenHarmony开发者

OpenHarmony

如何在面试中机智的展现架构能力?

非凸科技

rust 编程语言 量化 构架师 互联网大厂

为拿几家大厂Offer,“闭关修炼

爱好编程进阶

Java 面试 后端开发

开发手机操作系统的难度有多大

InfoQ IT百科

手机硬件都有哪些

InfoQ IT百科

Oceanbase 和 TiDB 粗浅对比之 - 执行计划

TiDB 社区干货传送门

4.25解锁OpenHarmony技术日!年度盛会,即将揭幕!

Anna

未来手机操作系统有哪些发展趋势

InfoQ IT百科

手机拍照算法和硬件哪个更重要

InfoQ IT百科

移动平台WorkPlus集成化办公,打造企业全场景业务生态

BeeWorks

刚拿的字节跳动offer“打水漂”

爱好编程进阶

Java 面试 后端开发

别找了,这是迄今为止把微服务讲的最清楚的一篇!没有之一

爱好编程进阶

Java 面试 后端开发

单例模式你不得不知道的底层原理

爱好编程进阶

Java 面试 后端开发

CDF全球调查:软件交付性能停滞不前

飞算JavaAI开发助手

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