http1.0是一种无状态、无连接的应用层协议,每次发送请求,都需要发起tcp连接,等服务器处理完成后会断开tcp连接。所以网络的利用率比较低。
缺点:无连接、队头阻塞(下一个请求必须在前一个响应完成后才会发送)。
http1.1 解决了这种无连接的问题。
1、保持长连接,增加connection字段,通过设置keep-alive保持连接不断开,提高了网络的利用率。如果想断开客户端连接,需把connection字段设置为false。
2、支持请求管道化:使得请求并行传输。也就是说服务器必须按照客户端发送的请求顺序依次回应相应的结果,以保证客户端能够区分出每次请求的响应内容。
3、缓存处理。(新的字段如cache-control)但是还是无法解决队头阻塞的问题。
4、增加Host字段、支持断点传输等。
http2.0 具有以下新特性
1、 二进制分侦: HTTP/2 采用二进制格式传输数据,而非 HTTP 1.x 的文本格式,二进制协议解析起来更高效。
HTTP2.0通过在应用层和传输层之间增加一个二进制分帧层,突破了HTTP1.1的性能限制、改进传输性能。
2、 多路复用(连接共享):HTTP2.0实现了真正的并行传输,它能够在一个TCP上进行任意数量HTTP请求。而这个强大的功能则是基于“二进制分帧”的特性。
3、 头部压缩:在HTTP1.x中,头部元数据都是以纯文本的形式发送的,通常会给每个请求增加500~800字节的负荷。
比如说cookie,默认情况下,浏览器会在每次请求的时候,把cookie附在header上面发送给服务器。(由于cookie比较大且每次都重复发送,一般不存储信息,只是用来做状态记录和身份认证)。HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。高效的压缩算法可以很大的压缩header,减少发送包的数量从而降低延迟。
4、 服务器推送:服务器除了对最初请求的响应外,服务器还可以额外的向客户端推送资源,而无需客户端明确的请求。
网友评论