HTTP2协议
2019-12-21 16:20:31 24 举报
AI智能生成
HTTP2脑图总结
作者其他创作
大纲/内容
http1.1的缺点
过于庞大 & 过多的可选项
未能被充分利用的TCP
传输大小和资源数量
恼人的延迟
线头阻塞
不支持服务器推送消息
那些年的克服之道
Sharding(分片,将同一页面的资源分散到不同域名下,提升连接上限)
Spriting(合并多张小图为一张大图)
Inlining(将图片的原始数据嵌入在CSS文件里面的URL里,减少网络请求次数)
Concatenation(拼接,将多个体积较小的JS文件打包成1个体积更大的JS文件,但如果其中1个文件的改动就会导致大量数据被重新下载)
http2协议
二进制传输
HTTP/2 所有性能增强的核心在于新的二进制分帧层,它定义了如何封装 HTTP 消息并在客户端与服务器之间传输。
多路复用的流
同域名下所有通信都在单个连接上完成。
单个连接可以承载任意数量的双向数据流。
数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
优先级
头压缩(HPACK)
压缩是非常棘手的课题
服务器推送(Server Push)
流控制
有HTTP/2数据流在一个TCP连接内复用,TCP流即不够精细,也无法提供必要的应用及API来调节各个数据流的传输。为了解决这个问题,HTTP/2 提供了一组简单的构建块,这些构建块允许客户端和服务器实现其自己的数据流和连接级流控制:
① 流控制具有方向性
② 流控制基于信用
③ 流控制无法停用
④ 流控制为逐跃点控制,而非端到端控制
https://developers.google.com/web/fundamentals/performance/http2?hl=zh-CN#spdy_%E4%B8%8E_http2_%E7%AE%80%E5%8F%B2
SPDY
再HTTP/2出现之前,google曾开发过SPDY, 在现在HTTP/1.x协议配合SPDY,可达到类似于HTTP/2的功能,但再HTTP/2出现之后,SPDY已被弃用。参考https://baike.baidu.com/item/SPDY
数据流、消息和帧
概念
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
消息:与逻辑请求或响应对应的完整的一系列帧
帧:HTTP/2通信的最小单位,每个帧都包含帧头,至少也会识别出当前帧所属的数据流
关系总结
所有通信都在一个TCP连接上完成,此链接可以承载任意数量的双向数据流
每个数据流都有一个唯一的标识符和可选的优先级信息,用于承载双向信息
每条消息都是一条逻辑HTTP消息(例如请求或响应),包含一个或多个帧
帧是最小的通信单位,承载着特定类型的数据,例如HTTP标头,消息负载等等。来自不同消息流的帧可以交错发送,让后再根据每个帧头的数据流标识符重新组装
图示
0 条评论
下一页