HTTP1.0、HTTP1.1以及HTTP2.0 主要特性对比

HTTP1.0
早期1.0版本的http协议是一种无状态、无连接的应用层协议。浏览器每次发送请求都和服务器建立一个tcp连接,进行三次握手,服务器处理完后立即断开连接,服务器也不记录过去的状态。
对于数据量大的长连接请求来说,如果该请求没有得到及时响应,就会阻塞下一个请求。
http1.1就是来解决这些问题的。

HTTP1.1
首先是长连接,http1.0需要在请求中加上connection:keep-alive来告诉服务器不要关闭,后面还有请求要发送。而http1.1默认支持长连接,它能够发送多个请求,节约带宽。如果请求太频繁,并且有一个请求处理很久的话,后面的请求还是可能会阻塞。
于是就有了http2.0。

HTTP2.0
1、多路复用
所有的http2.0通信都在一个tcp连接上完成,并且这个连接可以处理任意数量的请求,所以把多个js、css文件合并成一个对于页面的优化已经没什么效果了。
不同的请求对应着不同的stream id,当有请求被阻塞时,服务器就会先处理别的请求,然后再根据stream id找到被阻塞的请求进行处理。
2、头部压缩
在http2.0之前,头部是以纯文本的形式发送的,通常会给每个请求增加500-800字节的负荷,而http2.0利用HPACK对消息头进行压缩传输,并且相同的头部信息不会通过请求发送,会使用之前请求携带的头部信息,节省了报文头占用的流量。
3、服务器推送
客户端发起第一个请求的时候,服务器会知道其附加的资源文件(js、css),它会顺便把客户端需要的资源一起推送到客户端,以免客户端再次发起请求。速度自然是快了很多。

猜你喜欢

转载自blog.csdn.net/qq_37012533/article/details/84620865