SPDY 目前是一種應用層實驗性協(xié)議,旨在讓互聯(lián)網(wǎng)訪問更快速,減少web頁面的延遲。
SPDY 設計特點
協(xié)議在SSL層的基礎上,增加了一個session 層,從而在一個tcp 連接基礎上,實現(xiàn)了多并發(fā)和交叉流傳輸
HTTP 的GET ,POST 仍舊采用舊有的消息格式,當然SPDY 協(xié)議對原有的數(shù)據(jù)做了封裝和編碼,這里采用Wrapper設計模式。
流是雙向的,比如,既可以從客戶端發(fā)起,也可以從服務器端發(fā)起(PUSH)
SDPY的目標就是通過其基本特性和高級特性,來達到低訪問延遲
基本特性包括
1 流復用
SPDY最牛逼的地方,是允許在一個TCP連接里面,允許無限并發(fā)流(在雙方資源可承受的情況下)。因為請求是在一個單一的通道交錯傳輸,TCP的可以達到很高的效率,從而更少的網(wǎng)絡連接需要,可以以很高的 數(shù)據(jù)密度做傳輸。
2 具備優(yōu)先級的請求
雖然無限的并行數(shù)據(jù)流的解決了序列化的問題,但是它們引入了另一個問題:如果由于信道帶寬的限制,客戶端可能會阻止怕堵塞通道的要求。為了克服這個問題,SPDY實現(xiàn)請求的優(yōu)先次序:客戶端可以請求盡可能多的項目,每個請求分配一個優(yōu)先級。這樣即使高優(yōu)先級的請求仍處在pending狀態(tài),通道也不會傳輸非關鍵的,低優(yōu)先級的請求,這樣就有效地阻止了傳輸擁塞。
3 HTTP Header 壓縮
對于HTTP 請求,響應頭,SPDY都做了壓縮,這樣包更小,對于RESTFUL類型的WEB2.0 ,or OpenAPI 業(yè)務,將會有可觀的效率提升。
高級特性
1 服務器端推送
SPDY通過X-Associated-Content 協(xié)議頭來向客戶端推送數(shù)據(jù),頭通知客戶端,我要向你推送資源,準備接收好了。最近火爆的Google+ ,如果你用chrome瀏覽器,默認就采用SPDY技術,并且開啟了服務器推送技術。服務器的推技術,全面提升了用戶體驗,是G+ 產(chǎn)品很快占據(jù)了足夠多的優(yōu)勢,最近Facebook 開發(fā)自己的瀏覽器,也有擺脫現(xiàn)在技術限制的考慮
2 服務器暗示
不像上面提到的PUSH 技術,服務器會先告訴瀏覽器,你可以下載ABC資源了,這個ABC資源,可能就是下一個頁面的JS ,CSS ,或者內(nèi)容。服務器不會主動推送的,仍舊等待客戶端請求,這對于低速網(wǎng)絡,是個很大的優(yōu)化,有點類似于我們的預加載技術
效果測試
TOP25 網(wǎng)站的平均頁面加載時間
DSL 2 Mbps downlink, 375 kbps uplinkCable 4 Mbps downlink, 1 Mbps uplink
Average msSpeedupAverage msSpeedup
HTTP3111.9162348.188
SPDY basic multi-domain* connection / TCP2242.75627.93%1325.4643.55%
SPDY basic single-domain* connection / TCP1695.7245.51%933.83660.23%
SPDY single-domain + server push / TCP1671.2846.29%950.76459.51%
SPDY single-domain + server hint / TCP1608.92848.30%856.35663.53%
SPDY basic single-domain / SSL1899.74438.95%1099.44453.18
SPDY single-domain + client prefetch / SSL1781.86442.74%1047.30855.40%