HTTP2
# 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
2
3
4
5
6
7
8
9
升级后在浏览器上就可以看到协议变成了HTTP/2(下图为chrome 浏览器)