二进制
Http2 采用二进制传输数据,而非http1.x的文本格式。
多路复用
http2的一个非常重要的改进。多路复用,简单来说就是一条TCP连接上面可以并发多个请求。
http1.x: 一个TCP连接上面同时只能发送一个http请求,也就是说第二个请求必须等第一个请求的响应返回才能发送。
http 管线化:多个请求可在一个TCP连接中发送,发送过程中无需等待前面请求的响应(也就是说第二个请求不必等第一个的请求的响应返回即可发送)。但是,客户端必须顺序接收响应,也就是说请求1响应未返回,那么请求2响应也不会返回。如果前一个请求非常耗时,那么后面的请求都会受到影响,这就是所谓的线头阻塞。http管线化只能发送幂等请求
http管线化并未实现真正的并发请求,大部分浏览器默认会关闭这一功能。
服务器端推送
服务器端可以主动推送数据到客户端。
应用场景: 当客户端请求一个web页面的时候,服务器端返回这个页面。(http1.x)客户端再次去请求这个页面中的内嵌的js、css资源,(http/2)这个时候服务器端就可以主动把客户端需要的资源推送给客户端。
http首部压缩
为什么要做首部压缩呢?一个web页面发送的多个请求,http的首部可能都是相同的,http2.0采用HPACK压缩,是专为http2.0设计的。
参考文章: