day178-HTTP协议-多路复用

要点

  1. Keep-Alive
  2. HTTP1.1存在的问题。
  3. HTTP/2多路复用解决要点2的问题。
  4. 不适用于HTTP/2的优化。

Keep-Alive

起源

每次请求都会建立一次HTTP连接,即3次握手四次挥手。一个长连接时就会有多次不间断请求数据和建立连接的过程。

如果第一次建立连接,就一直占用通道,就省去多次请求过程,
即:Keep-Alive

详细(Keep-Alive解决的核心问题)

规定的时间内,同一个域名多次请求数据,只建立一次HTTP请求,其他请求可复用每次建立的连接通道,以达到提高请求效率的问题。

HTTP1.1的其他问题

  • Keep-Alive解决多次连接问题
  1. 文件传输是串行进行。
    HTTP1.1协议中,传输的requestresponse都是基于文本的,所有的数据必须按顺序串行传输,这样接收端才能知道原本的顺序。
  2. 连接数过多。最大并发数有限为50(Apache)。

HTTP/2的多路复用

  • 解决以上的HTTP1.1中两个问题
  1. 解决文件串行传输。
    HTTP/2引入二进制数据帧的概念。对数据进行顺序标识,这样才能并行传输,接收端才能按照序列(即:顺序标识)对数据进行合并。
    (服务器并行传输数据)。
  2. 解决连接数过多。
    HTTP/2对同一域名下所有请求都是基于,不管访问多少个文件,都只建立一路连接
    最大并发提升到了300(Apache)。

不适用于HTTP/2的优化

  1. JS文件合并。
    上线时把所有多个模块代码压缩合并成一个文件,减少HTTP的请求数。但是其中某个模块改了之后,所有的文件都需要重新下载,不能被缓存。
    HTTP/2里,模块可以单独压缩上线不影响其他没有修改的模块。

  2. 多域名的下载速度
    当css文件和js文件放到两个域名下面时,可以避免浏览器的6个通道限制(对于同一个协议、域名、端口,浏览器允许同时打开个 TCP 连接,一般上限为 6 个)。

缺点

  • HTTP/2解决了这些缺点
  1. DNS解析时间变长。
  2. 增加服务器压力。
文章作者: lmislm
文章链接: http://lmislm.com/2019/07/10/2019-07-10/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog