SPDY(读作“SPeeDY”)是
Google开发的基于
TCP的会话层
[1] 协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对
HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入
SPDY协议后,在实验室测试中页面加载速度比原先快64%。
中文名
spdy协议
外文名
spdy
读 作
SPeeDY
定位
具体技术目标
在SSL层上增加一个SPDY会话层,以在一个TCP连接中实现并发流。
SSL层上增加SPDY会话层 通常的HTTP GET和POST格式仍然是一样的;然而SPDY为编码和传输数据设计了一个新的帧格式。
流是双向的,可以在客户端和服务器端启动。
SPDY旨在通过基本(始终启用)和高级(可选启用)功能实现更低的延迟。
[3] 复用流:SPDY允许在一个连接上无限制并发流。因为请求在一个通道上,TCP效率更高:更少的网络连接,发出更少更密集的数据包。
请求优先级:虽然无限的并发流解决了序列化的问题,但他们引入了另一个问题:如果带宽通道受限制, 客户端可能会因防止堵塞通道而阻止请求。为了克服这个问题,SPDY实行请求优先级:客户端从服务器端请求它希望的项目数量,并为每个请求分配一个优先级。这可以防止在网络通道被非关键资源堵塞时,高优先级的请求被挂起。
HTTP报头压缩:SPDY压缩请求和响应HTTP报头,从而减少传输的数据包数量和字节数。
SPDY提供了高级特征:服务器启动流。服务器启动流能用来分发内容到客户端,而不需要客户端发起请求。此选项可以由Web开发人员通过如下两种方法配置:
Server push:SPDY通过X-Associated-Content头试验了服务器推送数据给客户端的选项。这个头告诉客户端服务器将在客户端请求资源之前,推送资源给它。对于初始页面下载(例如用户初次访问这个网站),这样能大大提升用户体验。
Server hint:相对于自动推送资源到客户端,在服务器事先知道客户端需要的资源的情况下,服务器使用X-Subresources头建议客户端请求特殊的资源。但是,服务器仍然在发送内容前等待客户请求。通过窄带,这个选项能减少一个客户端发现它所需要的资源的数百毫秒,可能更适合于非初始页面加载。
SPDY并不用于取代HTTP/1.x,它只是修改了HTTP/1.x的请求与应答在网络上传输的方式;这意味着只需增加一个SPDY传输层,现有的所有服务端应用均不用做任何修改。 当使用SPDY的方式传输,
HTTP请求会被处理、标记简化和压缩。比如,每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头部,从而避免重复发送还未改变的头部。而还未发送的报文的数据部分将在被压缩后被发送。
SPDY协议类似于
HTTP,但旨在缩短
网页的加载时间和提高安全性。
SPDY协议通过压缩、多路复用和优先级来缩短加载时间。
[2] 注意:由于
SPDY协议已被HTTP/2协议取代,上述浏览器的新版本可能不再支持SPDY协议。
互联网工程任务组(
IETF)对谷歌提出的SPDY协议进行了标准化,于2015年5推出了类似于SPDY协议的
HTTP 2.0 协议标准(简称HTTP/2)。谷歌因此宣布放弃对SPDY协议的支持,转而支持HTTP/2。谷歌称,计划于 2016 年初在 Chrome 中移除 SPDY,并将为Chrome 40 添加 HTTP/2 协议支持。
此外,著名的开源
HTTP服务器软件 Nginx 也于2015年9月移除了对SPDY的支持,转而支持HTTP/2。
鉴于此,未来会有越来越多的浏览器和Web服务器选择支持HTTP/2而非SPDY,以前支持SPDY的浏览器和Web服务器也会通过升级取消对SPDY的支持转为支持HTTP/2。
因此,建议新的网站不要部署SPDY,转为部署HTTP/2。旧有的SPDY部署也应尽快转移至HTTP/2,以符合浏览器对新HTTP标准的支持。
[3]
来自 https://baike.baidu.com/item/SPDY/3399551?fromtitle=spdy%E5%8D%8F%E8%AE%AE&fromid=15652060&fr=aladdin