开发者社区> 问答> 正文

HTTP2相对于HTTP1.x有什么优势和特点?

展开
收起
前端问答 2019-12-10 07:18:27 1347 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    ⼆进制分帧

    帧:HTTP/2 数据通信的最⼩单位消息:指 HTTP/2 中逻辑上的 HTTP 消息。例如请求和响应等,消息由⼀个或多个帧组成。

    流:存在于连接中的⼀个虚拟通道。流可以承载双向消息,每个流都有⼀个唯⼀的整数ID

    HTTP/2 采⽤⼆进制格式传输数据,⽽⾮ HTTP 1.x 的⽂本格式,⼆进制协议解析起来更⾼效。

    头部压缩

    HTTP/1.x会在请求和响应中中重复地携带不常改变的、冗⻓的头部数据,给⽹络带来额外的负担。

    • HTTP/2在客户端和服务器端使⽤“⾸部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再通过每次请求 和响应发送
    • ⾸部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新;
    • 每个新的⾸部键-值对要么被追加到当前表的末尾,要么替换表中之前的值。

    你可以理解为只发送差异数据,⽽不是全部发送,从⽽减少头部的信息量

    image.png

    服务器推送

    服务端可以在发送⻚⾯HTML时主动推送其它资源,⽽不⽤等到浏览器解析到相应位置,发起请求再响应。例如服务端 可以主动把JS和CSS⽂件推送给客户端,⽽不需要客户端解析HTML时再发送这些请求。

    服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发 送RST_STREAM帧来拒收。主动推送也遵守同源策略,服务器不会随便推送第三⽅资源给客户端。

    多路复⽤

    HTTP 1.x 中,如果想并发多个请求,必须使⽤多个 TCP 链接,且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制。

    HTTP2中:

    • 同域名下所有通信都在单个连接上完成。
    • 单个连接可以承载任意数量的双向数据流。
    • 数据流以消息的形式发送,⽽消息⼜由⼀个或多个帧组成,多个帧之间可以乱序发送,因为根据帧⾸部的流标识可 以重新组装

    image.png

    2019-12-10 07:22:11
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载