n SPDY協定與HTTP長連接配接、pipeline相比,隻有在以下情況下有加載速度的優勢
Ø round trip很長的網絡中(尤其是長肥管道中)(推送)
Ø HTTP請求非常多的頁面(管道迅速warmup以及支援頭部壓縮)
Ø 部分HTTP請求會被阻塞的情況下(分優先級)
n SPDY利用X-Associated-Content 協定頭直接将頁面中的資源檔案推送到浏覽器緩沖區,而不是推送JavaScript可以直接操作的消息流。
1 SPDY簡介
SPDY是“SPeeDY”的發音縮寫,是Google 開發的基于傳輸控制協定(TCP)的應用層協定,用來改進網頁内容的傳輸,減少網頁加載時間。SPDY 協定旨在通過HTTP標頭壓縮、資料流的多路複用、請求分優先級來縮短網頁的加載時間。SPDY目前的版本是在HTTP和TCP中間的夾層。SPDY改善傳輸時延很有效。目前SPDY已經成為HTTP2.0标準的候選協定。
圖 3‑1 (來源: http://aiyooyoo.com/index.php/archives/528/)
SPDY在單個連接配接之上增加了一個幀層,用以多路複用多個并發流。幀層針對HTTP類的請求響應流進行了優化,是以現在運作在HTTP之上的應用,對應用開發者而言隻要很小的修改甚至無需修改就可以運作在SPDY之上。SPDY試圖保留HTTP的現有語義,是以cookies、ETags等特性都是可用的。
1.1 SPDY的主要特點
快速(多路複用&分級&頭部壓縮)
Ø SPDY可以為一個域名的請求公用一個TCP連接配接,而且不改變業務的HTTP語義。
Ø SPDY會為不同的内容提供不同的優先級,進而讓HTML等關鍵内容首先顯示出來,然後再處理JavaScript和視訊等次要内容。(The client can request as many items as the client wants from theserver, and assign a priority to each request)
Ø 傳輸内容也均以gzip或DEFLATE格式壓縮,并且可以同時壓縮HTTP header和content。(SPDY中,HTTP 的頭部則是選擇性的壓縮;在在HTTP1.1以及以前版本中,HTTP的頭部并不會被壓縮)。每個SPDY endpoint都記錄已經發送過的http請求的頭部,能夠避免重複發送沒有修改過的頭部,并且支援壓縮。
伺服器推送
SPDY通過X-Associated-Content 協定頭來向用戶端推送資料
伺服器提示
與推送技術不同,通過伺服器提示技術伺服器會先告訴浏覽器可以下載下傳某些資源了。伺服器不會主動推送的,仍舊等待用戶端請求,這對于低速網絡,是個很大的優化,有點類似預加載技術。
安全
在設計上所有通訊是TLS加密的,并且gzip壓縮。