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

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

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


1.服务器推送的意义

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


2.服务器推送的实现

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


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

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



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

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

Tips:Stream 1 中服务端基于 PUSH_PROMISE 帧告诉客户

singwa.csssingwa.js 资源即将推送,并且 Stream 1 Stream 2

Stream 3 可以并行推送(注意:不同 Stream 间可以并行发送,同一Stream 内的数据是有序的串行发送)。



5.PUSH_PROMISE 帧格式

       PUSH_PROMISE 帧中的 type=0x5,只能由服务器发送,格式如下:


6.抓包分析

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

相关文章
|
2天前
|
前端开发 API 网络架构
RESTful接口与http协议状态表述
该文介绍了RESTful风格API的好处和设计原则。RESTful API以资源为中心,通过HTTP方法(GET, POST, PUT, DELETE)表示操作,利用状态码反馈操作结果。它简化了客户端与服务端的交互,提供了一种通用规范,减少沟通成本。设计要点包括:URI描述资源,HTTP方法体现操作,使用标准HTTP状态码,GET不改变数据,使用复数名词,支持复杂资源关系,可选实现HATEOAS,以及接口版本管理。
|
3天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
4天前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议
|
7天前
|
网络安全
socks5代理连接成功无法访问http协议的站点
无法通过SOCKS5代理访问HTTP网站可能由多个原因引起,如代理服务器不支持HTTP、配置错误、防火墙阻拦、连接问题、身份验证失败、浏览器设置不当或服务器被封锁。检查并解决这些因素,若问题持续,需深入排查或联系服务提供商。
|
9天前
|
缓存 网络协议
HTTP 协议初探
HTTP 协议初探
29 1
|
14天前
|
安全 网络安全 数据安全/隐私保护
HTTPS协议
HTTPS协议
19 0
|
14天前
|
网络协议 安全 网络安全
Socks VS HTTP 谁才是最快的代理协议
Socks VS HTTP 谁才是最快的代理协议
|
14天前
|
安全 网络安全 数据安全/隐私保护
HTTP代理SSL连接:保障网络安全的重要协议
HTTP代理SSL连接:保障网络安全的重要协议
|
15天前
|
缓存 网络协议
【计算机协议】第一章——HTTP协议详解
【计算机协议】第一章——HTTP协议详解
|
16天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。