Http2, HTTP1.1 知识点收集

参考地址:

  1. https://blog.wangriyu.wang/2018/05-HTTP2.html
  2. https://www.jianshu.com/p/e57ca4fec26f

1, HTTP/1.1 存在的问题

  •     TCP 连接数限制
  • 线头阻塞 (Head Of Line Blocking) 问题
  • Header 内容多,而且每次请求 Header 不会变化太多,没有相应的压缩传输优化方案
  • 明文传输不安全。
  • 为了尽可能减少请求数,需要做合并文件、雪碧图、资源内联等优化工作

2,Http2.0 特点:

  •     二进制分帧层 (Binary Framing Layer)(response 头字段均小写)
  •  多路复用 (MultiPlexing)  在一个 TCP 连接上,每帧的 stream identifier 的标明这一帧属于哪个流,然后在对方接收时,根据 stream identifier 拼接每个流的所有帧组成一整块数据。 流的概念实现了单连接上多请求 - 响应并行,解决了线头阻塞的问题,减少了 TCP 连接数量和 TCP 连接慢启动造成的问题。
    • http2 对于同一域名只需要创建一个连接
  • 服务端推送 (Server Push) 浏览器发送一个请求,服务器主动向浏览器推送与这个请求相关的资源,这样浏览器就不用发起后续请求。【省略后后续的get 时间
  • Header 压缩 (HPACK)  使用 HPACK 算法来压缩首部内容
  •  应用层的重置连接 

    HTTP/1 来说,是通过设置 tcp segment 里的 reset flag 来通知对端关闭连接的。这种方式会直接断开连接,下次再发请求就必须重新建立连接。HTTP/2 引入 RST_STREAM 类型的 frame,可以在不断开连接的前提下取消某个 request 的 stream。

  •  请求(流的)优先级设置

  •  流量控制 

3, 流的状态:idle  reserved(local & remote ) open half-closed(local & remote ) closed;   以上也是流的生命周期。 其中reserved 都只能发送对应生命周期内的某些帧数据。

4,优化点:

  •     开启压缩 配置 gzip 等可以使传输内容更小,传输速度更快
  •  使用缓存 
  •  CDN 加速 
  •  减少 DNS 查询
  •  减少重定向

    

 

猜你喜欢

转载自my.oschina.net/u/592116/blog/2252286
今日推荐