图解http读书笔记四——基于http的功能追加协议
消除http瓶颈的spdy
spdy缩短web页面的加载时间
http的瓶颈
- 一条连接只可发送一个请求
- 请求只可从客户端开始
- 请求/响应首部未经压缩就发送。首部信息越多,延迟越大
- 发送冗长的首部,每次互相发送相同的首部浪费
- 可任意选择压缩格式,非强制压缩
解决方法
- ajax的解决方法
ajax(asychronous javascript and xml)异步javascript与xml是一种有效利用javascript和dom的操作,以达到局部web页面替换加载的异步通信手段。
即只更新一部分页面,传输数据减少。
但是仍未解决大量请求的问题 -
comet的解决方法
-
spdy的目标
ajax和comet虽然改善了http,但是协议层面的限制束手无策。为了进行根本性改善,需要协议层面的改动
spdy在tcp/ip的应用层与传输层之间添加了会话层,控制对数据的流动,但是还是采用http建立通信连接
使用spdy后,http协议获得一下功能- 多路复用流:单一的tcp连接可以无限制处理多个http请求
- 赋予请求优先级:给请求逐个分配优先级顺序
- 压缩http首部
- 推送功能:支持服务器主动向客户端推送数据
- 服务器提示功能:服务器可主动提示客户端请求所需的资源,避免发送不必要的请求
-
使用浏览器进行全双工通信的websocket
websocket协议
一旦websocket通信建立,过程中可以互相发送json\xml\html或图片等任意格式数据,由于是建立在http基础上,所以连接发起方仍然是客户端,而一旦建立连接,不论服务器还是客户端,可以直接互相发送报文
特点
- 推送功能
- 减少通信量,因为websocket会一直保持连接,而且首部信息少
握手请求
为了实现websocket通信,在http连接建立后,需要完成一次握手
- 握手——请求
为了实现websocket通信,需要用到http的upgrade首部字段,告知服务器协议发送变化,以达到握手的目的 - 握手——响应
对于之前的请求,返回状态码101 switching protocols的响应
http/2.0
目标是改善用户在使用web时的速度体验。基本都会先通过http/1.1与tcp连接。
实现方法:
- spdy
- http speed+mobility:用于改善并提高移动端通信时的速度和性能的标准,建立在spdy和websocket的基础上
- network-friendly http upgrade :移动端通信时改善http性能
web服务器管理文件的webdav
web-based distributed authoring and versioning,基于万维网的分布式创作和版本控制
是一个客队web服务器上的内容直接进行文件赋值、编辑的分布式文件系统。