SPDY 设计特点
协议在SSL层的基础上,增加了一个session 层,从而在一个tcp 连接基础上,实现了多并发和交叉流传输
HTTP 的GET ,POST 仍旧采用旧有的消息格式,当然SPDY 协议对原有的数据做了封装和编码,这里采用Wrapper设计模式。
流是双向的,比如,既可以从客户端发起,也可以从服务器端发起(PUSH)
SDPY的目标就是通过其基本特性和高级特性,来达到低访问延迟
基本特性包括
1 流复用
SPDY最牛逼的地方,是允许在一个TCP连接里面,允许无限并发流(在双方资源可承受的情况下)。因为请求是在一个单一的通道交错传输,TCP的可以达到很高的效率,从而更少的网络连接需要,可以以很高的 数据密度做传输。
2 具备优先级的请求
虽然无限的并行数据流的解决了序列化的问题,但是它们引入了另一个问题:如果由于信道带宽的限制,客户端可能会阻止怕堵塞通道的要求。为了克服这个问题,SPDY实现请求的优先次序:客户端可以请求尽可能多的项目,每个请求分配一个优先级。这样即使高优先级的请求仍处在pending状态,通道也不会传输非关键的,低优先级的请求,这样就有效地阻止了传输拥塞。
3 HTTP Header 压缩
对于HTTP 请求,响应头,SPDY都做了压缩,这样包更小,对于RESTFUL类型的WEB2.0 ,or OpenAPI 业务,将会有可观的效率提升。
高级特性
1 服务器端推送
SPDY通过X-Associated-Content 协议头来向客户端推送数据,头通知客户端,我要向你推送资源,准备接收好了。最近火爆的Google+ ,如果你用chrome浏览器,默认就采用SPDY技术,并且开启了服务器推送技术。服务器的推技术,全面提升了用户体验,是G+ 产品很快占据了足够多的优势,最近Facebook 开发自己的浏览器,也有摆脱现在技术限制的考虑
2 服务器暗示
不像上面提到的PUSH 技术,服务器会先告诉浏览器,你可以下载ABC资源了,这个ABC资源,可能就是下一个页面的JS ,CSS ,或者内容。服务器不会主动推送的,仍旧等待客户端请求,这对于低速网络,是个很大的优化,有点类似于我们的预加载技术

效果测试
TOP25 网站的平均页面加载时间
DSL 2 Mbps downlink, 375 kbps uplinkCable 4 Mbps downlink, 1 Mbps uplink
Average msSpeedupAverage msSpeedup
HTTP3111.9162348.188
SPDY basic multi-domain* connection / TCP2242.75627.93%1325.4643.55%
SPDY basic single-domain* connection / TCP1695.7245.51%933.83660.23%
SPDY single-domain + server push / TCP1671.2846.29%950.76459.51%
SPDY single-domain + server hint / TCP1608.92848.30%856.35663.53%
SPDY basic single-domain / SSL1899.74438.95%1099.44453.18
SPDY single-domain + client prefetch / SSL1781.86442.74%1047.30855.40%