HTTP/2概述
HTTP协议族的主要发展历程
HTTP/2 特性
多路复用(MultiPlexing)
首部压缩( Header Compression )
优先级( Stream Priority )
服务器推送(Server Push)
首部压缩
HPACK 是专门为 HTTP/2 量身定制的压缩技术。
原理:在服务器和客户端各维护一个“首部表”,表中用索引代表首部名,或者首部键 - 值对,上一次发送两端都会记住已发送过哪些首部,下一次发送只需要传输差异的数据,相同的数据直接用索引表示即可。
服务器推送
服务器可以对一个客户端请求发送多个响应。也就是说,除了对最初请求的响应外,服务器还可以额外向客户端推送资源。
服务器通过推送的方式(主动发起新流,而不是等客户端请求然后再响应),向客户端发出要约PUSH_PROMISE。客户端解析帧数据时,若发现是一个PUSH_PROMISE类型的帧,可以选择缓存这个资源,也可以拒绝这个资源。
优先级
HTTP/2 中,流可以有一个优先级属性
可以在 HEADERS 帧中包含优先级 priority 属性;
可以单独通过 PRIORITY 帧专门设置流的优先级属性。
多路复用
多路复用允许同时通过单一的 TCP 连接发起多重的请求/响应消息,客户端和服务器可以把 HTTP 消息分解为互不依赖的帧,然后乱序发送,最后再在另一端根据 Stream ID 把它们重新组合起来。