HTTP2 规范(RFC7540)在2015年发布,即将迈入第5个年头,你的网站有没有支持呢?今天给大家普及下HTTP2一些基本概念和开启方式
HTTP1.x在当代长肥网络环境(高带宽高延时)下面临以下问题:
背负众望的HTTP2终于在2015年5月的RFC7540推出,HTTP2基于tcp协议,且仅在应用层变动。最大的特点就是多路复用,并以二进制方式并压缩报文,传输量大幅度减少,还能实现服务器消息推送(类似websocket)等强大功能,老的scheme不会变,不会出现「http2://」这样的网址,沿用「http://」,因此对客户端而言,兼容性很高,而且对于现代浏览器来说,使用HTTP2打开网站比http1.x更快。
HTTP2采用新的传输设计,所以出现了很多新名词,我们一起梳理下:
如下图所示:最外层是连接,它可以包含多个流,实现多路复用。一条流中可以包含多条消息,如request和response。一条消息中可以包含多条帧,它是最小单位,以二进制压缩存放数据内容。
同一个流下,传输帧是有序的,跨stream可以是无序的,这也是实现多路复用的关键。如下图所示:
更多详细信息可以看这里:https://developers.google.com/web/fundamentals/performance/http2
如果你跟我一样,自己的博客网站用的nginx作为前置代理,并使用了HTTPS,那么为你的网站开启HTTP2是非常简单的。需要保证拥有以下基础环境:
满足以上条件,只要在你的nginx配置文件里,更新一行配置就可以开启HTTP2:
server {
# 添加 http2
listen 443 ssl http2;
...
}
重启你的nginx服务,即刻生效。
如何查看开启效果:
touch ~/sshlog/output.log
export SSLKEYLOGFILE=/Users/davidli/sshlog/output.log;/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/davidli/sshlog/output.log
我抓的包在这里,供大家参考:https://pan.baidu.com/s/1ZwVVbgP0v2doIxJxf9D_Kg 提取码: cffs
2020年了,HTTP2你值得拥有!