首頁 > 後端開發 > php教程 > nginx的spdy協議

nginx的spdy協議

WBOY
發布: 2016-08-08 09:31:41
原創
865 人瀏覽過

SPDY 是 Google 開發的基於傳輸控制協定 (TCP) 的應用層協定 ,開發小組正在推動 SPDY 成為正式標準(現為網路草案)。 SPDY 協議旨在透過壓縮、多路復用和優先權來縮短網頁的載入時間和提高安全性。 (SPDY 是Speedy 的暱稱,意思是更快)

SPDY 與HTTP 的關係

SPDY 協議只是在性能上對HTTP 做了很大的優化,其核心思想是盡量減少連接個數,而對於HTTP 的語意並沒有做太大的修改。具體來說是,SPDY 使用了 HTTP 的方法和頁眉,但是刪除了一些頭並重寫了 HTTP 中管理連接和資料轉移格式的部分,所以基本上是相容於 HTTP 的。

Google 在 SPDY 白皮書裡表示要向協議棧下面滲透並替換掉傳輸層協議(TCP),但是因為這樣無論是部署起來還是實現起來暫時相當困難,因此 Google 準備先對應用層協議HTTP 進行改進,先在SSL 之上增加一個會話層來實現SPDY 協議,而HTTP 的GET 和POST 訊息格式保持不變,即現有的所有服務端應用均不用做任何修改。

因此在目前,SPDY 的目的是為了加強 HTTP,是對 HTTP 一個更好的實現和支援。至於未來 SPDY 廣泛應用後會不會演出狸貓換太子,替換掉 HTTP 並且徹底顛覆整個 Internet 就是 Google 的事了。

為什麼要重新建立一個 SPDY ?

距離萬維網之父蒂姆·伯納斯-李發明並推動 HTTP 成為如今互聯網最流行的協議已經過去十幾年了(現用 HTTP 1.1 規範也停滯了 13 年了),隨著現在 WEB 技術的快速發展尤其是HTML5 的不斷演進,包括WebSockets 協定的出現以及當前網路環境的改變、傳輸內容的變化,當初的HTTP 規範已經逐漸無法滿足人們的需要了,HTTP 需要進一步發展,因此HTTPbis 工作團體已經被組成並被授權考慮HTTP 2.0 ,希望能解決目前HTTP 所帶來的諸多限制。而 SPDY 正是 Google 在 HTTP 即將從 1.1 跨越到 2.0 之際推出的試圖成為下一代互聯網通信的協議,長期以來一直被認為是 HTTP 2.0 唯一可行選擇。

HTTP 協定的不足

1. 單路連線請求低效

HTTP 協定的最大弊端就是每個TCP 連線請求低效率

HTTP 協定的最大弊端就是每個TCP 連線請求值,瀏覽器只能透過建立多個連線來解決。此外在 HTTP 中對請求是嚴格的先入先出(FIFO)進行的,如果中間某個請求處理時間較長會阻塞後面的請求。

(注:雖然HTTP pipelining 對連接請求做了改善,但複雜度增加很大,並未普及)

2. HTTP 只允許由客戶端主動發起請求

服務端只能等待客戶端發送一個請求,在可以滿足預先載入的現狀是一種桎梏。

3. HTTP 頭冗餘

HTTP 頭在同一個會話裡是反覆發送的,中間的冗餘信息,比如User-Agent、Host 等不需要重複發送的信息也在反复發送,浪費頻寬和資源。

SPDY 協定的優點

1. 多路復用 請求最佳化

SPDY 規定在一個 SPDY 連接內可以有無限個行請求這樣 SPDY 透過重複使用在單一 TCP 連接上的多次請求,而不是為每個請求單獨開放連接,這樣只需建立一個TCP 連接就可以傳送網頁上所有資源,不僅可以減少消息交互往返的時間還可以避免創建新連接造成的延遲,使得TCP 的效率更高。

此外,SPDY 的多路復用可以設定優先權,而不像傳統HTTP 那樣嚴格按照先入先出一個一個處理請求,它會選擇性的先傳輸CSS 這樣更重要的資源,然後再傳輸網站圖示之類較不重要的資源,可以避免讓非關鍵資源佔用網路通道的問題,提升 TCP 的效能。

2. 支援伺服器推送技術

伺服器可以主動向客戶端發起通訊向客戶端推送數據,這種預先載入可以使用戶一直保持一個快速的網路。

3. SPDY 壓縮了 HTTP 頭

舍棄掉了不必要的頭信息,經過壓縮之後可以節省多餘數據傳輸所帶來的等待時間和頻寬。

4. 強制使用 SSL 傳輸協定

Google 認為 Web 未來的發展方向必定是安全的網路連接,全部請求 SSL 加密後,訊息傳輸更加安全。

🎜🎜SPDY 協定的意義🎜🎜

按照 Google 的說法,SPDY 被創造出來的唯一目的就是讓 Web 更快(strive to make the whole web fast),其名字 SPDY(Speedy) 也似乎在暗示著這一點。那麼 SPDY 的意義又在哪裡呢?

1. 普通用戶:

對於用戶來說,隱藏在瀏覽器下面的 SPDY 相比 HTTP 沒有任何區別,但是我們可以感覺到 Google 服務在 Chrome 下異常的快,這就是 SPDY 的功勞了。此外網站資訊傳輸加密後不用擔心資訊被截取等,大大增加了安全性和保密性。

2. 前端人員:

對於前端工程師來說,提升頁面效率是一件很重要的事情,目前大多採用像CSS Sprites 等方法來優化網站,對於因為頁面加載時每張圖片、icon 都請求一個連接甚至採用在不同頁面引用不同圖片來降低一個頁面內圖片的請求數量。而現在有了 SPDY 的請求優化可以將請求順序進行重排,這樣可以在很大程度上緩解頁面載入時圖片請求帶來的影響。例如像極客公園的報名頁面,如果報名用戶過多,例如極客公園2012年創新大會或極客公園第27 期長城會,可以很明顯的感覺出頭像的請求會拖累整體頁面加載變慢甚至變卡,相信對於這點,經常上淘寶或刷微博的會深有體會,一旦網速稍微慢點就會出現頁面加載異常,還有像蘋果App Store(除去服務器因為地區的延遲),。豆莢這類應用程式分發平台上應用程式圖示刷新緩慢等,如下面這個影片所示。

3. 運維人員:

SPDY 在降低連線數目的同時,也使得伺服器上每個客戶端佔用的資源也減少,從而可以釋放出更多記憶體和 CPU 。此外 SPDY 綜合起來可以將瀏覽速度提升一倍,頁面載入延遲方面的改進達 64% 。

  眾家支援的 SPDY 協定

  如果你在使用 Chrome 瀏覽器,同時使用像 Gmail 等 Google 的網路服務的話,其實你已經透過 HTTP 存取這些服務了。在瀏覽器中打開 chrome://net-internals/#spdy 就會發現你已經在使用 SPDY 協定了。 (除了包括Google 自家的Gmail、Google Plus 等Google 系服務外,其他公共站點例如Twitter 和Webtide 也已經支持該協議。在國內,基於WebKit 的豌豆莢 2.0 也曾表示將引進Chrome的SPDY技術來進一步提升速度。 Mozilla 家的 Firefox 自 Firefox 13 也預設開啟對 SPDY 的支援。而亞馬遜家的 Silk 利用 SPDY 的深度其實不比 Google 自家的 Chrome 和 Firefox 差。

在Web 伺服器方麵包括最流行和最廣泛的 Apache 在內,Netty、Jeety、Varnish、Erlang 和 Hightide 應用伺服器以及面向 node.js 的伺服器也都已經宣布支援 SPDY。 ( Nginx 也表示將支援 SPDY)

如何部署 SPDY?

近日 Google 正式發布了適用於最受歡迎 Web 伺服器 Apache 的插件 mod_spdy,下載安裝後你的 Apache 伺服器就能使用 SPDY 協定與相容 SPDY 協定的瀏覽器如 Chrome、FireFox 等通訊。像之前所說的那樣,SPDY 是運行在 HTTPS 上,非 HTTPS 流量並不會受到 mod_spdy 影響。

SPDY 部署需求:

1. Apache 2.2 (≥2.2.4)

2. mod_ssl 模組開啟

2. mod_ssl 模組開啟

1 mod_spdy 模組

下載頁下載對應系統的安裝包2. 安裝mod_spdy 模組

2. 安裝mod_spdy 模組 deb

apt-get -f install

-系統為Debian/Ubuntu

------------------------- -----------------------------------

yum install at (if you do not already have ' at' installed)

rpm -U mod-spdy-*.rpm

-系統為CentOS/Fedora

3. 重啟3. /apache2 restart(Debian/Ubuntu)

4. 確定開啟與否

開啟Chrome 瀏覽器,輸入並前往chrome://net-internals/#spdy 頁面,查看主機名稱是否出現在欄位中。如果出現說明已經部署完畢,如果沒有出現去伺服器錯誤日誌(error.log)裡查詢。

以上就介紹了nginx的spdy協議,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板