HTTP2

HTTP2与HTTP1的区别

  • 头部压缩
    • HPACK
  • 二进制
    • 不再使用明文报文
    • 效率满满
    • 基础单位是帧
  • 数据流
    • 客户端发出的是奇数
    • 服务端发出的是偶数
  • 多路复用
    • 解决HTTP 队头阻塞
    • maxstream
  • Server Push
  • 一个TCP连接上有多少流

HTTP2改进项

  • 头部压缩
    • 很多字段占据大量字节,有必要压缩
    • 多次传输的数据都是重复的
    • 字段是ASCII编码,有必要改成二进制编码
    • HPACK (50~90%压缩效率)
      • 静态字典
        • 61组
      • 动态字典
        • Http2maxrequests
          • 避免动态表无限增大
      • Huffman编码(压缩算法)
  • 二进制帧
    • header+payload
    • 9 =(帧长度3+帧类型1+标志位1+2^31流标志符)
  • 并发传输
    • Connection [N*Stream [(Request|Response)Message[N *frame]]]
      • Stream 单调递增
      • nginx http2maxconcuttentstreams = 128
        • goaway
  • server push
    • 通过pushpromise帧告诉下一个资源
    • 需要预先设置