SPDY 协议介绍
目前支持SPDY协议的应用有:firefox开发板,jetty8等。
SPDY 目前是一种应用层实验性协议,旨在让互联网访问更快速,减少web页面的延迟。
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 uplink | Cable 4 Mbps downlink, 1 Mbps uplink | |||
| Average ms | Speedup | Average ms | Speedup | |
| HTTP | 3111.916 | 2348.188 | ||
| SPDY basic multi-domain* connection / TCP | 2242.756 | 27.93% | 1325.46 | 43.55% |
| SPDY basic single-domain* connection / TCP | 1695.72 | 45.51% | 933.836 | 60.23% |
| SPDY single-domain + server push / TCP | 1671.28 | 46.29% | 950.764 | 59.51% |
| SPDY single-domain + server hint / TCP | 1608.928 | 48.30% | 856.356 | 63.53% |
| SPDY basic single-domain / SSL | 1899.744 | 38.95% | 1099.444 | 53.18 |
| SPDY single-domain + client prefetch / SSL | 1781.864 | 42.74% | 1047.308 | 55.40% |