Skip to content

77.HTTP/2的多路复用 #77

Open
Open
@neptoo

Description

@neptoo

HTTP/2的多路复用

http/2最大的特点是使用多路复用,对同一个域的服务器只建立一次TCP连接,加载多个资源,使用二进制帧传输,同时会对http头部进行压缩。

在 HTTP/1 中,每次请求都会建立一次HTTP连接(3次握手4次挥手),请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然有两个效率上的问题:

  • “串行”文件传输。当请求a文件时,b文件只能等待,等待a连接到服务器、服务器处理文件、返回文件。
  • 连接数过多。超过服务器能承载的最高并发,就需要等待前面某个请求处理完成。

HTTP/2的多路复用就是为了解决上述的两个性能问题,引入帧和流。多路复用,就是在一个 TCP 连接中可以存在多条流。换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。

HTTP/2 复用 TCP 连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。

帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。

多路复用的意义在于可以用同一个连接传输多个资源,故之前HTTP1.1的优化就没必要了,比如使用雪碧图、合并JS、CSS等减少请求数。

在http 1.1时代,由于需要建立多个TCP连接,服务器需要更多的线程来处理请求,同样地,浏览器也需要,所以浏览器会限制同一个域的同时请求数。

参考文章

简单讲解一下 http2 的多路复用

怎样把网站升级到http/2

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions