面试官:HTTP2 相较于 HTTP1 的变化

106 阅读3分钟

HTTP/2 相较于 HTTP/1.x 引入了多项显著的改进和变化,旨在提高网络性能和效率。以下是 HTTP/2 和 HTTP/1.x 之间的主要变化和改进:

特性HTTP/1.xHTTP/2
协议版本单一版本(HTTP/1.0 和 HTTP/1.1)单一版本(HTTP/2)
连接方式每个请求一个 TCP 连接,过多请求导致延迟使用单个 TCP 连接,多路复用多个请求/响应
多路复用不支持,多条请求需要等到之前请求完成才能开始支持,多个请求和响应可以同时在同一连接上进行
头部压缩头部信息以明文传输,重复数据多,占用带宽使用 HPACK 压缩头部,减少传输数据量
优先级不支持优先级控制支持请求的优先级,可以通过流控制来优化资源使用
流量控制基本流量控制提供流量控制机制,防止某个连接占用过多带宽
推送机制不支持推送机制支持服务器推送,服务器可以主动推送资源给客户端
安全性HTTP/1.1 可以通过 HTTPS 提供安全性HTTP/2 通常与 TLS 一起使用,提供更好的安全性
连接管理需要多次连接(TCP 握手)减少连接开销,保持持久连接
请求/响应模型采用文本格式的请求和响应二进制格式的请求和响应,解析效率更高
错误处理错误处理相对简单提供更丰富的错误处理机制

主要变化详解

  1. 多路复用

    • HTTP/1.x:每个请求和响应都需要单独的连接,多个请求会阻塞在一个连接中,导致“队头阻塞”问题。
    • HTTP/2:在单个连接上同时处理多个请求和响应,消除了队头阻塞的情况。
  2. 头部压缩

    • HTTP/1.x:每次请求都需要传输完整的头部信息,导致冗余。
    • HTTP/2:通过 HPACK 压缩算法压缩头部,减小了传输的大小,提高了传输效率。
  3. 优先级和流量控制

    • HTTP/1.x:不支持请求优先级。
    • HTTP/2:支持流的优先级设置,可以根据优先级分配资源,同时提供流量控制机制,优化网络带宽使用。
  4. 服务器推送

    • HTTP/1.x:只能被动响应客户端请求。
    • HTTP/2:服务器可以主动推送相关资源(如 CSS、JS 文件)给客户端,减少请求次数和加载时间。
  5. 安全性

    • HTTP/1.x:虽然可以使用 HTTPS,但并不是强制的。
    • HTTP/2:大多数实现都要求通过 TLS 进行传输,增强了安全性。

总结

HTTP/2 的引入为网络传输带来了显著的性能提升和更高的效率,尤其在现代网页应用中,能够更好地处理大量小请求,降低延迟,提供更好的用户体验。随着越来越多的服务器和浏览器支持 HTTP/2,推荐使用 HTTP/2 以利用其优势。