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

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

关注

评论

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

别让代码毁了低空经济!80% 风险藏在第三方组件里,SCA是唯一 “透视镜”

安势信息

SCA 开源组件 低空经济 无人机安全 许可证合规

YashanDB容灾备份策略,保障企业关键数据安全无忧

数据库砖家

YashanDB入门教程:构建高效稳定的企业数据库系统

数据库砖家

全面掌握 Consul:服务注册发现、健康检查、跨数据中心一网打尽

左诗右码

WebGL开发框架概述

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

YashanDB实时数据同步技术及配置方法

数据库砖家

工业数据管理的八大痛点,为何总是治标不治本?一次架构重构告诉你答案

TDengine

tdengine 工业数据 idmp

“医” 起穿越三国,开启《脑洞三国》新体验

博文视点Broadview

选择局域网视频软件,让你的开会数据仅在企业内网流转!

BeeWorks

即时通讯 IM 私有化部署

非凸底仓增强算法上线中山证券,智启普惠投资新时代

非凸科技

在 Amazon Bedrock 中结合 RAG 与 MCP 高效缓解提示词膨胀问题

亚马逊云科技 (Amazon Web Services)

大数据-74 Kafka 核心机制揭秘:副本同步、控制器选举与可靠性保障

武子康

Java 大数据 kafka 分布式 消息队列

YashanDB如何支持企业数字化转型及数据驱动决策

数据库砖家

YashanDB升级及数据迁移的最佳实践总结

数据库砖家

Apache IoTDB PMC 主席黄向东:积跬步,至千里,IoTDB 的 2023-2025

Apache IoTDB

为什么有些企业不用腾讯会议,会单独采购私有化部署的会议系统?

BeeWorks

即时通讯 IM 私有化部署

YashanDB实现分布式缓存的最佳实践

数据库砖家

YashanDB示例项目实战,快速掌握数据库操作技能

数据库砖家

详细教程:DNS服务器未响应是怎么回事,有哪些解决方法?

防火墙后吃泡面

YashanDB如何支持大数据处理与实时分析

数据库砖家

黑龙江等保测评方法详解

等保测评

YashanDB如何简化数据合规性管理

数据库砖家

付费功能免费用!!!Yops 运维面板 v0.9 正式发布

Yops-运维易

Linux 程序员 服务器 Linux 运维 #docker

YashanDB如何实现高并发环境下的数据操作

数据库砖家

CST基础教程:如何在3D 中添加多针脚集总元件

思茂信息

cst操作 CST软件 CST Studio Suite

PAC2025:鲲鹏平台“挑大梁”,国产算力点燃青春力量

科技热闻

YashanDB入门教程:从零开始掌握数据库核心功能

数据库砖家

YashanDB事务处理机制及应用场景详解

数据库砖家

WebGL开发数字孪生的技术方案

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

黑龙江等保测评实施流程四阶段

等保测评

青春出码,鸿蒙一夏!2025 HarmonyOS创新赛携手千名开发者解锁开发新范式

最新动态

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