飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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

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

关注

评论

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

聚焦「就近」与「轻计算」,阿里云边缘云连续3年领跑!

阿里云CloudImagine

云计算 边缘计算 边缘云

飞针测试的流程有哪些?华秋一文告诉你

华秋电子

龙蜥 Node.js/WebAssembly SIG 重磅发布 Node.js/Noslate 性能优化白皮书

OpenAnolis小助手

node.js Web 白皮书 龙蜥社区 sig

用友BIP智能财务,助力企业构建世界一流预算管理体系

用友BIP

全面预算

软件测试/测试开发丨移动端App自动化之App控件定位

测试人

软件测试 自动化测试 测试开发

构建云边端一体的分布式云架构,软硬结合驱动边缘计算创新场景

百度Geek说

人工智能 架构 分布式 边缘计算 企业号 3 月 PK 榜

易观千帆 | 2023年2月证券APP月活跃用户规模盘点

易观分析

金融 证券 经济

阿里内部进阶学习SpringBoot+Vue全栈开发实战文档

三十而立

华秋一文带你读懂PCB中的“金手指”设计

华秋电子

【3.24-3.31】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

ElasticSearch 拼音搜索自定义扩展插件(长拼音序列)

alexgaoyh

中文分词 分词 Elastic Search 自定义插件

数据擘画资产全景 AI诊断故障真因

用友BIP

看完这份SpringBoot神级文档,面试真的可以为所欲为

三十而立

Java IT java面试

简述家居物联网体系架构

毛广斌

下游需求趋势长期向好,高端产品国产替代空间广阔

华秋电子

DTALK直播预约 | 数据资产管理:金融机构数据价值释放的必经之路

袋鼠云数栈

数据资产管理

vivo 手机云服务建设之路-平台产品系列04

vivo互联网技术

系统设计 稳定性 数据安全 用户数据 手机云服务

微服务架构中的链路超时分析

做梦都在改BUG

Java 架构 微服务

软件测试/测试开发丨利用 pytest 玩转数据驱动测试框架

测试人

软件测试 自动化测试 测试开发 pytest

机器学习实战系列[一]:工业蒸汽量预测(最新版本下篇)含特征优化模型融合等

汀丶人工智能

数据挖掘 机器学习 数学建模

拯救脂肪肝第一步!以飞桨3D医疗影像分割方案MedicalSeg自主诊断脂肪肝

飞桨PaddlePaddle

深度学习 计算机视觉 语义分割 PaddlePaddle

重现一条简单SQL的优化过程

GreatSQL

MySQL greatsql greatsql社区

软件测试丨JavaScript脚本注入,完成Selenium 无法做到的那些事

测试人

JavaScript 软件测试 自动化测试 测试开发 selenium

HummerRisk 使用教程: 多云检测

HummerCloud

云安全

Hologres技术揭秘:JSON半结构化数据的极致分析性能

阿里技术

json 半结构化数据

火山引擎A/B测试产品——DataTester 私有化架构分享

字节跳动数据平台

私有化部署 ab测试 A/B 测试 企业号 3 月 PK 榜

企业号 4 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号 4 月 PK 榜

利用Jackson序列化实现数据脱敏

京东科技开发者

Jackson 数据脱敏 企业号 3 月 PK 榜

过亿云资源运维管控难?华为云CloudMap带你喝着咖啡做运维

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

利用自动化平台可以做的那亿点事 |得物技术

得物技术

自动化

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