SPDY
SPDY(發音如英語:),一種開放的網路傳輸協定,由Google开发,用來傳送網頁內容。基于传输控制协议(TCP)的应用层协议。SPDY也就是HTTP/2的前身。Google最早是在Chromium中提出的SPDY协议[1]。被用于Google Chrome浏览器中来访问Google的SSL加密服务。SPDY并不是首字母缩略字,而仅仅是"speedy"的缩写。SPDY现为Google的商标[2]。HTTP/2的關鍵功能主要來自SPDY技術,換言之,SPDY的成果被採納而最終演變為HTTP/2。
網際網路套組 |
---|
應用層 |
傳輸層 |
網路層 |
連結層 |
SPDY并不是一个标准协议,但SPDY的开发组推动SPDY成为正式标准,而成为了互联网草案[3]。後來SPDY未能單獨成為正式標準,不過SPDY開發組的成員全程參與了HTTP/2的制定過程。Google Chrome[4]、Mozilla Firefox、Safari、Opera、Internet Explorer[5]等主要瀏覽器均已經或曾經支持SPDY协议。SPDY协议类似于HTTP,但旨在缩短网页的加载时间和提高安全性。SPDY协议通过压缩、多路复用和优先级来缩短加载时间[1]。HTTP/2協議完成之後,Google認為SPDY可以功成身退了[6],於是最終Google Chrome淘汰對SPDY的支援,全面改為採用HTTP/2。
设计
设计SPDY的目的在于降低网页的加载时间[7]。通过优先级和多路复用,SPDY使得只需要建立一个TCP连接即可传送网页内容及图片等资源[1][8]。SPDY中广泛应用了TLS加密,传输内容也均以gzip或DEFLATE格式压缩(与HTTP不同,HTTP的头部并不会被压缩)。另外,除了像HTTP的网页服务器被动的等待浏览器发起请求外,SPDY的网页服务器还可以主动推送内容[9]。
与HTTP的关系
SPDY并不用于取代HTTP,它只是修改了HTTP的请求与应答在网络上传输的方式[1];这意味着只需增加一个SPDY传输层,现有的所有服务端应用均不用做任何修改。 当使用SPDY的方式传输,HTTP请求会被处理、标记简化和压缩。比如,每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头部,从而避免重复发送还未改变的头部。而还未发送的报文的数据部分将在被压缩后被发送。
浏览器支持
- Google Chrome和Chromium已经支持SPDY[10][11]。
- Mozilla Firefox自11.0开始内嵌支持SPDY,但默认并不使用[12][13]。从Firefox 13开始默认开启对SPDY的支持[14]。
- Opera从12.10开始支持SPDY[15][16][17]。
- Internet Explorer从IE 11开始支持SPDY[5]。
- Safari從8.0(OS X Yosemite及iOS 8)開始支援SPDY。
参考文献
- . Chromium Developer Documentation. [2009-11-13]. (原始内容存档于2018-02-03).
- . Google. [September 30, 2011].
- . [2012-02-08].
- . [2012-02-28].
- . 2013-06-25 [2013-06-25]. (原始内容存档于2013-07-01).
- . iThome. 2015-02-10.
- . Official Google Chromium Blog. 2009-11-11 [2009-11-13]. (原始内容存档于2012-04-10).
- Iljitsch van Beijnum. . Ars Technica. 2009-11-12 [2009-11-13].
- Mirko Lindner. . 13 November 2009 [2011-10-21].(德文)
- . [2012-03-10]. (原始内容存档于2013-06-24).
- . [2012-03-10]. (原始内容存档于2010-12-23).
- .
- Firefox中键入about:config,查找network.http.spdy.enabled并设置为true即可启用该功能。
- . [2012-03-10]. (原始内容存档于2013-08-01).
- Chromium SPDY client implementation 页面存档备份,存于.
- Chromium: SPDY proxy examples 页面存档备份,存于.
- . [2012-11-07]. (原始内容存档于2013-07-31).
- Chris Bentzel; Bence Béky. . Chromium Blog. 2015-02-09 [2017-07-01]. (原始内容存档于2017-03-08).
Update: To better align with Chrome's release cycle, SPDY and NPN support will be removed with the release of Chrome 51.
- . [2017-07-01]. (原始内容存档于2017-02-01).
TL;DR: Support for HTTP/2 is widespread enough that SPDY/3.1 support can be dropped.
- . [2017-07-01]. (原始内容存档于2017-04-24).