HTTP2


2021-03-31 上次更新时间:4/29/2022, 9:34:08 AM 0

# HTTP/1.x缺点

HTTP/1.x 报文有一些性能上的缺点:

  • Header 不像 body,它不会被压缩。
  • 两个报文之间的 header 通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。当在同一个服务器打开几个连接时:TCP 热连接比冷连接更加有效。

# HTTP/2

为了解决 HTTP/1.x 报文的缺点,HTTP/2 引入了一个额外的步骤: 它将 HTTP/1.x 消息分成帧并嵌入到流 (stream) 中。数据帧和报头帧分离,这将允许报头压缩。将多个流组合,这是一个被称为 多路复用 (multiplexing) 的过程,它允许更有效的底层 TCP 连接。

HTTP/2是二进制协议而不是文本协议。

# HTTP/2优点:

一个字,就是快!

  • 多路复用:多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。也就是说一个TCP连接可以一次发送和接受多个请求。
  • 二进制分帧:多加了一个步骤,专门将消息分成了更小的二进制编码的帧。减少了传输量。
  • 首部压缩:新的压缩算法,减小首部大小,提升发送效率。
  • 服务推送:客户端请求一个资源,服务端把客户端可能需要请求的其他资源一起主动发给它,减少了交互次数。另外服务端还能缓存这样的资源,提升效率。

服务端推送指把客户端所需要的css/js/img资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤(从缓存中取)。

# 升级到HTTP/2

从 HTTP/1.x 升级到 HTTP/2 不需要开发人员做修改。只要浏览器和服务器都具备条件时,打开 HTTP/2 即可使用。

# 升级必备条件:

  • openssl 1.0.2+
  • 升级HTTPS
  • Nginx 1.9.5+ 且 支持

# Nginx启动HTTP/2

server {
  listen        443 ssl http2; # 改成 http2 即可
  server_name   luolei.org;

  #SSL配置
  ssl                   on;
  ssl_certificate       /etc/nginx/conf.d/certificate.crt;
  ssl_certificate_key   /etc/nginx/conf.d/certificate.key;
}
1
2
3
4
5
6
7
8
9

升级后在浏览器上就可以看到协议变成了HTTP/2(下图为chrome 浏览器)

上次更新时间: 4/29/2022, 9:34:08 AM