SPDY

Google开发的基于传输控制协议的应用层协议

SPDY(發音如英語:speedy),一種開放網絡傳輸協定,由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 FirefoxSafariOperaInternet 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加密,傳輸內容也均以gzipDEFLATE格式壓縮(與HTTP不同,HTTP的頭部並不會被壓縮)。另外,除了像HTTP的網頁伺服器被動的等待瀏覽器發起請求外,SPDY的網頁伺服器還可以主動推播內容[9]

與HTTP的關係

SPDY並不用於取代HTTP,它只是修改了HTTP的請求與應答在網絡上載輸的方式[1];這意味着只需增加一個SPDY傳輸層,現有的所有伺服器端應用均不用做任何修改。

當使用SPDY的方式傳輸,HTTP請求會被處理、標記簡化和壓縮。比如,每一個SPDY端點會持續跟蹤每一個在之前的請求中已經傳送的HTTP報文頭部,從而避免重複傳送還未改變的頭部。而還未傳送的報文的數據部分將在被壓縮後被傳送。

瀏覽器支援

Chrome 移除 SPDY

2015年9月,Google 宣佈了計劃,移除對SPDY的支援,改支援HTTP/2[18]。此更動在Chrome 51中生效。[19][20]

參見

參考文獻

  1. ^ 1.0 1.1 1.2 1.3 SPDY: An experimental protocol for a faster web. Chromium Developer Documentation. [2009-11-13]. (原始內容存檔於2018-02-03). 
  2. ^ Google Permissions: Guidelines for Third Party Use of Google Brand Features. Google. [September 30, 2011]. (原始內容存檔於2020-05-01). 
  3. ^ SPDY Protocol. [2012-02-08]. (原始內容存檔於2021-04-17). 
  4. ^ SPDY on Google servers?. [2012-02-28]. (原始內容存檔於2013-06-19). 
  5. ^ 5.0 5.1 IE11 SPDY/3 confirmed. 2013-06-25 [2013-06-25]. (原始內容存檔於2013-07-01). 
  6. ^ Google準備淘汰SPDY改採HTTP/2. iThome. 2015-02-10 [2016-10-21]. (原始內容存檔於2021-01-18).  參數|newspaper=與模板{{cite web}}不匹配(建議改用{{cite news}}|website=) (幫助)
  7. ^ A 2x Faster Web. Official Google Chromium Blog. 2009-11-11 [2009-11-13]. (原始內容存檔於2012-04-10). 
  8. ^ Iljitsch van Beijnum. SPDY: Google wants to speed up the web by ditching HTTP. Ars Technica. 2009-11-12 [2009-11-13]. (原始內容存檔於2012-04-26). 
  9. ^ Mirko Lindner. Google stellt HTTP-Alternative SPDY vor. 13 November 2009 [2011-10-21]. (原始內容存檔於2009-11-16). (德文)
  10. ^ Chromium SPDY client implementation. [2012-03-10]. (原始內容存檔於2013-06-24). 
  11. ^ Chromium: SPDY proxy examples. [2012-03-10]. (原始內容存檔於2010-12-23). 
  12. ^ Mozilla Bug 528288 - Implement SPDY protocol. [2012-03-10]. (原始內容存檔於2012-11-06). 
  13. ^ Firefox中鍵入about:config,尋找network.http.spdy.enabled並設置為true即可啟用該功能。
  14. ^ Mozilla Bug 724563. [2012-03-10]. (原始內容存檔於2013-08-01). 
  15. ^ Chromium SPDY client implementation頁面存檔備份,存於互聯網檔案館).
  16. ^ Chromium: SPDY proxy examples頁面存檔備份,存於互聯網檔案館).
  17. ^ Opera 12.10 Changelog. [2012-11-07]. (原始內容存檔於2013-07-31). 
  18. ^ Chris Bentzel; Bence Béky. Hello HTTP/2, Goodbye SPDY. 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. 
  19. ^ API Deprecations and Removals in 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. 
  20. ^ 存档副本. [2017-07-01]. (原始內容存檔於2017-04-24).