50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

【详细注释+流程讲解】基于深度学习的文本分类 TextCNN

阿里云天池

机器学习 阿里云

ETL中如何自定义规则

谷云科技RestCloud

数据同步 ETL 数据规则

聚道云助IT公司破解数据同步难,高效转型新利器!

聚道云软件连接器

案例分享

聚道云软件连接器:助力企业财务效率提升的成功案例

聚道云软件连接器

案例分享

建议有这些需求的企业部署SD-WAN!

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

前十名单公布|OpenTiny 前端 Web 应用开发挑战赛初赛结果揭晓~

OpenTiny社区

开源 前端 低代码 组件库

Node.js环境下淘宝商品详情接口开发实践

tbapi

淘宝商品详情数据接口 淘宝数据采集

inBuilder低代码平台新特性推荐-第十七期

inBuilder低代码平台

开源 低代码

被 AI 写的游戏代码砸中是什么感觉 | 10 分钟打造你的超级 AI 编码助手

阿里云云效

阿里云 云原生 通义灵码

天池医疗AI大赛[第一季] Rank8解决方案[附TensorFlow/PyTorch/Caffe实现方案]

阿里云天池

人工智能 阿里云

Rank4 NLP新闻文本分类-开源代码+经验分享@惊鹊

阿里云天池

机器学习 阿里云

【机器学习入门】拥抱人工智能,从机器学习开始

阿里云天池

机器学习 阿里云

无需注册即可使用 ChatGPT;Poe 创始人:大模型幻觉是创业公司的机会丨RTE 开发者日报 Vol.176

声网

《信息技术服务 智能运维 第2部分:数据治理》国家标准2024年第一次线下编写会议成功召开

云智慧AIOps社区

运维

提质增效|大型汽车制造业运维精细化管理建设实战

云智慧AIOps社区

智能运维 运维管理

云智慧:拥抱AI算法驱动的智能运维服务创新引擎

云智慧AIOps社区

人工智能 自然语言处理 算法

网站安全方面,漏洞扫描VSS能提供哪些帮助

德迅云安全杨德俊

知识图谱在五大智能领域的应用

悦数图数据库

知识图谱

跨界创新,数字赋能:探索低代码平台的多元化应用场景

优秀

低代码 低代码开发平台 低代码平台 低代码应用场景

“不知今夕是何年”的周基年解法|得物技术

得物技术

Java 程序员 前端 后端 企业号 4 月 PK 榜

解密通义灵码:软件研发工具的“大脑”

阿里云云效

阿里云 云原生 通义灵码

Flutter应用在苹果商店上架前的准备工作与注意事项

测试测试从

delete is create

架构实战营 - 模块四作业

满心

架构实战营

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇 记某客户的一次无缝数据迁移

极限实验室

console Gateway easysearch

谈谈我对 AIGC 趋势下软件工程重塑的理解

阿里云云效

阿里云 云原生 AIGC 通义灵码

云智慧发布对象关系型数据库CloudPanguDB,打破传统技术壁垒

云智慧AIOps社区

数据库

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