HTTP/2使用
- h2是基于ssl加密传输必须要有证书
- 证书可上阿里云免费申请, 或使用openssl工具生成自签名证书
- nodejs加载http2模块
- 使用http2.createSecureServer方法创建h2连接
openssl证书生成命令
openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt
注意: 如果是使用阿里云服务别忘了添加规则打开入口443端口访问权限
HTTP
- HTTP/1.1 基于字符串
- HTTP/2 基于帧
HTTP/2 的帧(Frame)与流(Stream)等概念
HTTP/2特点
- 异步连接多路复用
- 头部压缩;
- 请求/响应管线化;
- 多路复用请求;
- 对请求划分优先级;
- 压缩HTTP头;
- 服务器推送流(即Server Push技术);
- SPDY试图保留HTTP的现有语义,所以cookies、ETags等特性都是可用的。
保持与HTTP 1.1语义的向后兼容性也是该版本的一个关键目标。SPDY是一种HTTP兼容协议,由Google发起,Chrome、Opera、Firefox以及Amazon Silk等浏览器均已提供支持。HTTP实现的瓶颈之一是其并发要依赖于多重连接。
HTTP管线化技术
可以缓解这个问题,但也只能做到部分多路复用。此外,已经证实,由于存在中间干扰,浏览器无法采用管线化技术。SPDY在单个连接之上增加了一个帧层,用以多路复用多个并发流。帧层针对HTTP类的请求响应流进行了优化,因此运行在HTTP之上的应用,对应用开发者而言只要很小的修改甚至无需修改就可以运行在SPDY之上。
帧
帧: HTTP/2.0连接中的最小单元
流
流:帧在跨越一个虚拟通道的双向流动的HTTP/2.0连接内(帧传输所用到的管道)
"流"里面的多路复用
- 响应使用了"流"管道技术,可以根据请求的顺序给响应标识,保证可以给对应的请求做响应
- 一个流里可以响应几百条数据,比http/1的并行处理极大的优化了响应速度
- 以前需要多个http/1请求的,现在都可以用一个http/2来解决
流里面使用的管道化技术多路复用代替了HTTP/1的并行连接
HTTP/2 的Server Push的利与弊
Server Push只会在用户请求特定的地址时 服务器会 “主动”推送资源给用户
所以,使用Server Push需要提前配置好