HTTP追加协议
现在影响HTTP网络请求的因素主要是:
- 浏览器的阻塞,一条链接上只能发送一个请求,而浏览器又对TCP链接数量有限制
- 请求只能从客户端开始,客户端不能接受响应以为的指令
- 请求头内容在多次发送请求时过于冗余,而且请求偷没有压缩
- 对请求体和响应体是非强制性的压缩
WebSocket
- WebSocket是一个持久化的协议,建立链接后无需在发送HTTP头部信息
- 真正的全双工通信,不必在使用AJAX轮询和Long Poll,这两种方式都有可能出现503服务器正忙错误
- AJAX轮询:客户端不断的使用AJAX来询问服务端是否有新消息,需要服务器有很快的处理速度
- Long Poll:长轮询,客户端不断的使用AJAX来询问服务端是否有新消息,但是服务端有新消息后才会给予响应,否则会处于一直阻塞等待状态,需要服务器有很高的并发
- 没有同源限制
WebDNV
- 可直接对web服务器上的内容进行即时操作的分布式文件系统协议
- 除啦对文件的编辑这种基本功能,还有防止被其他用户覆盖的加锁功能和对文件修改的版本控制功能,多用于多人在线文档编辑
- 仅仅在HTTP上增加了几个请求方法,和返回状态码就可开启WebDNV协议,具体操作就要在请求体中标明了
HTTP2.0
- 二进制分帧:保证HTTP的动作、方法、首部不受印象的情况下,在TCP和HTTP之间增加的一个二进制分帧层;HTTP2.0会将所有的传输信息分隔成更小的消息和帧(一个消息可包含多个帧),并采用二进制格式进行编码,将原来HTTP1.1的报文头部分封装到headers帧、报文体部分分装到data帧
- 首部压缩:客户端和服务端都维护一张首部表来存储之前发送的首部键值对,对于后续相同的请求头不再每次发送,会自动使用之前发送请求的请求头,若后续首部发生变化时只需要发送变化的键值对,新增或修改的首部会追加更改双方的维护的首部表
- 多路复用:由于通信传输单位被分成了一个个的帧,对于同一个域名下所有通信就可以都在一个TCP连接上完成,这些帧对应逻辑流动的信息并行(可同时接受和发送消息)在同一个TCP连接双向交换信息(由于只有一条TCP连接,哪些资源合并请求优化就没有明显的效果)
- 并行双向字节流的请求和响应:会将消息分解成多个互不依赖的帧,乱序发送,在另一端根据每个帧的位置标识重新组装
- 请求优先级策略:优先级高的流应该优先发送,但又不是绝对的,就出现了不同优先级混合的情况
- 服务器推送:服务器可以对一个客户端的请求可以有多个响应
升级HTTP2.0
Nginx:ContOS7目前更新完epel-release
源后,使用yum安装的Nginx为1.16版本,开启HTTPS时会默认开启HTTP2.0模式,若想关闭可以将listen
字段后的http2
的字段值,然后配置反向代理即可
Comments NOTHING