HTTP的瓶颈:
-
一条连接上只可发送一个请求;
-
请求只能从客户端开始,客户端不可以接收除响应以外的指令;
-
请求、响应的首部未经压缩就发送出去,首部的信息越多延迟就越大;
-
发送冗长的首部,每次互相发送相同的首部造成的浪费比较多;
-
可以任意选择压缩格式;
Comet的解决办法:服务器接收请求后,在处理完后就会立即返回响应,但为了推送功能,Comet会将响应处于挂起状态,当服务器端有内容更新时,再返回该响应。(做到了实时更新)
SPDY:在应用层和传输层新加如会话层的形式运作,控制了数据流动。通过单一的TCP链接,可以无限制处理多个HTTP请求,还可以给请求逐个分配优先级顺序,压缩请求和响应的首部,支持服务器主动向客户端推送数据,服务器可以主动提示客服端请求所需资源。
WebSocket:确立WebSocket通讯连接,客户端和服务器双方可以任意的发送给对方报文,支持服务器向客户端推送数据,且保持一直连接状态,需要使用HTTP的Upgrade首部字段,告知服务器通讯协议发生了变化,(JS可以调用WebSocket的程序接口,以实现全双工通信)
Upgrade:websocket
握手:请求之后,会返回状态码101 Switching Protocols的响应,
(握手成功后,不再使用HTTP的数据帧,而使用WebSocket独立的数据帧)
WebDAV:可以对Web服务器上的内容直接进行文件复制,编辑等操作的分布式系统,还具备创建者管理,文件编辑过程中禁止其他用户内容覆盖的加锁功能,对文件内容修改得版本控制功能,
WebDAV新增的方法:
PROPFIND | 获取属性 |
---|---|
PROPPATCH | 修改属性 |
MKCOL | 创建集合 |
COPY | 复制资源及属性 |
MOVE | 移动资源 |
LOCK | 资源加锁 |
UNLOCK | 资源解锁 |
WebDAV新增的状态码:
102 | 可正常处理请求 |
---|---|
207 | 存在多种状态 |
422 | 格式正确,内容有误 |
423 | 资源已被加锁 |
424 | 处理某请求关联的请求失败 |
507 | 保存空间不足 |