Skip to main content

http版本

Published 1 min readMarkdown

http1.1

  • keep-alive使得http请求可以复用TCP连接,从而降低建立连接的耗时(2次round trip)
  • 队头阻塞问题限制并发性能(通过减少请求或域名切片优化)
  • 无状态,多次请求可能需要重复发送cookie用来维护会话,导致请求体积增大影响性能

http2

  • 解决体积问题:
    • 使用binary传输数据(哈夫曼编码)
    • 使用HPack压缩格式,压缩请求和响应标头元数据
    • 连接中维护headers的静态表和动态表,缺省的标头字段使用静态表的值(因此,可以说http2是有状态的协议)
  • 解决队头阻塞
    • 分帧的多路复用(二进制是分帧的前提,分帧是多路复用的前提,http2的多路复用并非时分或频分复用,服务端组装请求时通根据每一帧的前9个字节进行组装,详细原理见这盘文章:https://segmentfault.com/a/1190000016975064)
  • push
    • 服务端可以主动推送静态资源给客户端,前置下载流程,客户端缓存静态资源,当解析到该资源时,直接读缓存而非单独发送请求

http3

  • TCP协议的队头阻塞
    • 使用基于UDP协议的QUIC协议和TLS1.3协议,RTT从6降低到1,解决TCP队头阻塞问题,进一步优化性能

No comments yet. Be the first to comment.

More from this blog