HTTP2.0与HTTP1.1的区别?
5 分钟阅读
•
548 字
+
727 词
HTTP2.0采用的是==
二进制格式传输数据
==,而
不是文本格式
,使得==解析可以更加高效==,减少了解析时间。
HTTP2.0还采用了==
头部压缩
==,实现是在==
两端建立一个索引表
==,对相同的头只==发送索引表中的索引==。
HTTP2.0还支持==
多路复用
==,允许在==
单个TCP连接上切分成多个流
==,
每个流有自己的ID
,它是一个虚拟的通道,并且还可以
设置优先级
。
HTTP 2.0 还将所有的==
传输信息分割为更小的帧
==。常见的帧有==
Header 帧
==,用于**==传输 Header 内容==
,并且
会开启一个新的流**。再就是
==Data 帧==
,用来传输
正文实体
。
多个 Data 帧属于同一个流
。通过这两种机制,HTTP 2.0 的客户端可以将==
多个请求分到不同的流中
==,然后将请求内容拆成帧,进行二进制传输。这些帧可以打散乱序发送, 然后根据==
每个帧首部的流标识符重新组装
==,并且可以根据优先级,决定优先处理哪个流的数据。
但是还是==
受限于tcp层的队头阻塞
==,这时候其他流的包的顺序号如果在tcp层是更早的,那么这个包没到达,会影响其他流的数据收发。
参考答案:
-
二进制协议
:
HTTP/2.0采用二进制格式传输数据 ,而非HTTP/1.1的 文本格式 ,使得解析更高效,减少了解析时间。 -
多路复用
:
HTTP/2.0支持多路复用 ,允许在 单个TCP连接上并行交错 发送多个请求和响应,解决了HTTP/1.1中的 队头阻塞 问题。 -
头部压缩
:
HTTP/2.0引入了HPACK压缩算法 ,对 请求和响应的头部信息进行压缩,减少了冗余头部信息的传输 ,提高了传输效率。 -
服务器推送
:
HTTP/2.0允许 服务器主动推送资源给客户端 ,而不需要客户端明确请求,这可以减少页面加载时间。 -
优先级和依赖
:
HTTP/2.0允许 客户端为请求设置优先级 ,并 表达请求之间的依赖关系,资源加载更加有序 。