複製鏈接
請複製以下鏈接發送給好友

SPDY

鎖定
SPDY(讀作“SPeeDY”)是Google開發的基於TCP的會話層 [1]  協議,用以最小化網絡延遲,提升網絡速度,優化用户的網絡使用體驗。SPDY並不是一種用於替代HTTP的協議,而是對HTTP協議的增強。新協議的功能包括數據流的多路複用、請求優先級以及HTTP報頭壓縮。谷歌表示,引入SPDY協議後,在實驗室測試中頁面加載速度比原先快64%。
中文名
spdy協議
外文名
spdy
讀    作
SPeeDY
開發公司
Google
基    於
TCP
功    能
數據流的多路複用、請求優先級以及HTTP報頭壓縮

SPDY功能

定位
  • 將頁面加載時間減少50%。
  • 最大限度地減少部署的複雜性。SPDY使用TCP作為傳輸層,因此無需改變現有的網絡設施。
  • 避免網站開發者改動內容。 支持SPDY唯一需要變化的是客户端代理和Web服務器應用程序。
具體技術目標
  • 單個TCP連接支持併發的HTTP請求。
  • 壓縮報頭和去掉不必要的頭部來減少當前HTTP使用的帶寬。
  • 定義一個容易實現,在服務器端高效率的協議。通過減少邊緣情況、定義易解析的消息格式來減少HTTP的複雜性。
  • 強制使用SSL,讓SSL協議在現存的網絡設施下有更好的安全性和兼容性。
  • 允許服務器在需要時發起對客户端的連接並推送數據。 [2] 

SPDY原理

在SSL層上增加一個SPDY會話層,以在一個TCP連接中實現併發流。
通常的HTTP GET和POST格式仍然是一樣的;然而SPDY為編碼和傳輸數據設計了一個新的幀格式。
流是雙向的,可以在客户端和服務器端啓動。
SPDY旨在通過基本(始終啓用)和高級(可選啓用)功能實現更低的延遲。 [3] 

SPDY基本特徵

  • 複用流:SPDY允許在一個連接上無限制併發流。因為請求在一個通道上,TCP效率更高:更少的網絡連接,發出更少更密集的數據包。
  • 請求優先級:雖然無限的併發流解決了序列化的問題,但他們引入了另一個問題:如果帶寬通道受限制, 客户端可能會因防止堵塞通道而阻止請求。為了克服這個問題,SPDY實行請求優先級:客户端從服務器端請求它希望的項目數量,併為每個請求分配一個優先級。這可以防止在網絡通道被非關鍵資源堵塞時,高優先級的請求被掛起。
  • HTTP報頭壓縮:SPDY壓縮請求和響應HTTP報頭,從而減少傳輸的數據包數量和字節數。

SPDY高級特徵

SPDY提供了高級特徵:服務器啓動流。服務器啓動流能用來分發內容到客户端,而不需要客户端發起請求。此選項可以由Web開發人員通過如下兩種方法配置:
  1. Server push:SPDY通過X-Associated-Content頭試驗了服務器推送數據給客户端的選項。這個頭告訴客户端服務器將在客户端請求資源之前,推送資源給它。對於初始頁面下載(例如用户初次訪問這個網站),這樣能大大提升用户體驗。
  2. Server hint:相對於自動推送資源到客户端,在服務器事先知道客户端需要的資源的情況下,服務器使用X-Subresources頭建議客户端請求特殊的資源。但是,服務器仍然在發送內容前等待客户請求。通過窄帶,這個選項能減少一個客户端發現它所需要的資源的數百毫秒,可能更適合於非初始頁面加載。

SPDY關係

SPDY並不用於取代HTTP/1.x,它只是修改了HTTP/1.x的請求與應答在網絡上傳輸的方式;這意味着只需增加一個SPDY傳輸層,現有的所有服務端應用均不用做任何修改。 當使用SPDY的方式傳輸,HTTP請求會被處理、標記簡化和壓縮。比如,每一個SPDY端點會持續跟蹤每一個在之前的請求中已經發送的HTTP報文頭部,從而避免重複發送還未改變的頭部。而還未發送的報文的數據部分將在被壓縮後被髮送。
SPDY協議類似於HTTP,但旨在縮短網頁的加載時間和提高安全性。SPDY協議通過壓縮、多路複用和優先級來縮短加載時間。 [2] 

SPDY瀏覽器支持

Google Chrome和Chromium已經支持SPDY。
Mozilla Firefox自11.0開始內嵌支持SPDY。從Firefox 13開始默認開啓對SPDY的支持。
Opera從12.10開始支持SPDY。
Internet Explorer 11開始支持SPDY。
注意:由於SPDY協議已被HTTP/2協議取代,上述瀏覽器的新版本可能不再支持SPDY協議。

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] 
參考資料
  • 1.    上野宣.圖解HTTP:圖靈文化發展有限公司,2014:174-175
  • 2.    Mirko Lindner. Google stellt HTTP-Alternative SPDY vor. 13 November 2009
  • 3.    API Deprecations and Removals in Chrome 51. TL;DR: Support for HTTP/2 is widespread enough that SPDY/3.1 support can be dropped.