HTTP/2 协议-服务端主动推送消息

本文探讨HTTP/2协议中服务端主动推送消息的功能,旨在提高用户体验。相比于HTTP/1.1,HTTP/2通过PUSH_PROMISE帧实现在请求时并行推送资源,提升效率。内容包括服务器推送的意义、基本实现原理、HTTP/1.1与HTTP/2获取资源的对比、PUSH_PROMISE帧格式以及实际抓包分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP/2 协议-服务端主动推送消息

这篇文章介绍一下 HTTP/2 的服务端消息推送功能,它可以很大程度的提升客户的体验,它与之前介绍的 Websocket 消息推送有很大的不同,讨论一下 HTTP/2 协议中的 PUSH_PROMISE 服务端推送帧实现原理。

1.服务器推送的意义

  • 提前将资源推送到浏览器
  • 推送可以基于已发送的请求,例如客户端请求 html,服务端可以主动推送 jscss 文件

2.服务端推送的基本实现原理

  • 推送资源必须对应一个请求
  • 请求由服务端 PUSH_PROMISE 帧发送
  • 响应在 Stream IDStream 中发送,并且服务产生的 Stream ID 是偶数

3. HTTP/1.1 中获取资源示意图

在这里插入图片描述

Tips:实际页面会有很多 jscss 等文件请求。

4.HTTP/2 中获取资源示意图

HTTP/1HTTP/2 获取资源的区别,前者是效率低下的串行请求/响应,后者是基于流的高效并行推送,HTTP/2获取资源示意图如下:
在这里插入图片描述

在这里插入图片描述

Tips:在 Stream 1 中服务端基于 PUSH_PROMISE 帧告诉客户端 singwa.csssingwa.js 资源即将推送,并且 Stream 1Stream 2Stream 3 可以并行推送(备注:不同 Stream 间可以并行发送,同一个 Stream 内的数据是有序的串行)。

5.PUSH_PROMISE 帧格式

PUSH_PROMISE 帧中的 type=0x5,只能由服务器发送,格式如下:
在这里插入图片描述

6.抓包分析

在这里插入图片描述

Tips:如图所示,服务端推送资源之前会基于 PUSH_PROMISE 帧告诉客户端即将推送 /app/poster.jpg,这里需要搭一个基于 HTTP/2 的推送服务。

扫码关注
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值