1. <strike id="voekh"><bdo id="voekh"></bdo></strike>
      <button id="voekh"><acronym id="voekh"></acronym></button>

      <s id="voekh"></s>

        <span id="voekh"></span>
      1. <li id="voekh"><acronym id="voekh"></acronym></li>
        <th id="voekh"></th>
        作家
        登錄

        SPDY協議簡介及如何編譯含有SPDY的nginx

        作者: 來源: 2014-01-09 15:55:46 閱讀 我要評論

        SPDY是Google開發的基于傳輸控制協議(TCP)的應用層協議 (發音同“speedy”),以最小化網絡延遲,提升網絡速度,優化用戶的網絡使用體驗。SPDY并不是一種用于替代HTTP的協議,而是對HTTP協議的增強。新協議的功能包括數據流的多路復用、請求優先級,以及HTTP包頭壓縮。谷歌表示,引入SPDY協議后,在實驗室測試中頁面加載速度比原先快64%。

        目前主流瀏覽器Google Chrome Mozilla Firefox Opera Internet Explorer都已經支持了SPDY,主流web服務器Apache、Nginx、Netty、Jetty、node.js等都已經開始初步的支持SPDY基本已經支持SPDY,SPDY當前并不是一個標準協議,但SPDY的開發組已經開始推動SPDY成為正式標準。

        本文主要了解SPDY的基本概念,以及如何編譯一個含有SPDY的nginx。

        HTTP協議存性能上的一些問題

        一個連接一個請求。瀏覽器和web server之間都是以短連接方式交互,一個連接只服務一次請求,對于一個需要加載多個資源的頁面來說,將會帶來很高的延遲。

        只能由客戶端發起請求。服務器不能主動的將一些必須的資源推送給客戶端。

        HTTP協議只能對body進行壓縮處理,不能壓縮header。在一個cookie較多的站點,將對帶寬造成嚴重的浪費。

        冗余的頭部。一些頭部在同一個通道中通過請求在重復的發送。像User-Agent Host Accept* 常常是固定不變的,所以不需要重復發送

        可選的壓縮。HTTP 使用可選的壓縮編碼。但是內容應該總是使用壓縮格式。

        SPDY的目標

        1.SPDY為WEB定義和實現了一個應用層的協議來大大降低延遲。SPDY的高層次目標是:

        2.減少50%的網頁加載時間。我們的成果已經初步接近這個目標(見下面解釋)。

        3.最小化部署復雜性。SPDY使用TCP作為相關的傳輸層,所以現存的網絡基礎設施,不需要改變。

        4.避免網站開發者需要對網站作出任何改變。支持SPDY唯一需要的改變在用戶user agent和web server。

        5.聚集有興趣探索協議來解決延遲問題的志同道合的開發者。我們希望和開源社區 行業專家一起來開發這個新的協議。

        一些具體的技術目標:

        1.單個tcp連接支持并發的HTTP請求

        2.壓縮頭部和去掉不必要的頭部,來減少當前HTTP使用的帶寬

        3.定義一個容易實現,在服務器端高效率的協議。我們希望通過減少邊緣情況 定義易解析的消息格式來減少HTTP的復雜性

        4.讓SSL協議在現存的網絡基礎設施下有更好的安全性和兼容性。雖然SSL確實引入了延遲,我們認為網絡的長遠發展依賴一個安全的網絡連接。另外,使用SSL來確保整個通信不中斷是必要的。

        SPDY設計和特征

        在SSL層上加了一個SPDY session層,來實現并發和stream機制。

        通常的HTTP GET和POST格式仍然是一樣的;然而SPDY為編碼和傳輸設計了一個新的幀格式。

        基本特征

        復用流 SPDY允許在一個連接上無限制的并發流。因為請求在一個通道上,TCP效率更高:更少的網絡連接,更少更密集的數據包被發出

        請求優先級 雖然無數的并行數據流解決了序列化問題,但他們引入了另外的問題

        HTTP頭部壓縮

        高級特征

        此外,SPDY提供了高級特征,服務器啟動流。服務器啟動流能用來分發內容到客戶端,而不需要客戶端請求它。這個選項可以由web開發人員通過如下兩種方法配置:

        Server push SPDY通過X-Associated-Content頭試驗了服務器推送數據給客戶端的選項。這個頭告訴客戶端服務器將在客戶端請求資源之前,推送資源給它。對于初始頁面下載(例如用戶初次訪問這個網站),這樣能大大提升用戶體驗

        Server hint 相對于自動的推送資源到客戶端,服務器使用X-Subresources頭去建議客戶端,來請求特殊的資源,這是在服務器事先知道客戶的這些資源將被需要的情況下。但是,服務器仍然在發送內容前等待客戶請求。通過慢速鏈接,這個選項能減少一個客戶端發現它需要的資源數百毫秒的時間,并可能對非初始頁面加載會更好。

        SPDY實現

        下面是已經實現的:

        一個能同時提供HTTP SPDY服務的高速 全內存的服務程序。我們將在不久的將來開源這些代碼

        一個能使用HTTP或者SPDY的chrome瀏覽器。

        一個測試和基準設施,來確保頁面是不變的。

        NGINX SPDY編譯

        http://nginx.org/patches/attic/spdy/README.txt

        Nginx 支持 SPDY draft 2

        Nginx 從1.3.15開始支持

        需要OpenSSL 1.01+

        目前已知的問題和限制:

        不支持server push

        不支持SPDY連接速率限制

        如何編譯含SPDY的nginx?

        1.安裝OpenSSL 1.0.1+

        2.下載nginx 1.3.x 以上的版本

        3.解壓nginx

        4.下載應用SPDY module patch

        wget http://nginx.org/patches/spdy/patch.spdy.txt

        patch -p1 < patch.spdy.txt

        5.配置

        ./configure --with-http_ssl_module --with-http_spdy_module

        6.編譯

        Make

        配置

        server {

        listen 443 ssl spdy default_server;

        ssl_certificate server.crt;

        ssl_certificate_key server.key;

        ...

        }

        下一步會主要學習SPDY草案的內容,以及閱讀代碼。

        原文鏈接:http://blog.csdn.net/liujiyong7/article/details/17953979

        【編輯推薦】

        1. Facebook宣布支持谷歌SPDY協議:欲取代HTTP
        2. 為高負載網絡優化Nginx和Node.js方法
        3. HTTP代理與SPDY協議

          推薦閱讀

          網管應該知道的路由器功能

        對于企業的局域網管理,網管們的工作量會越來越大,需要加強對局域網的安全管理,就需要對網絡設備加以利用。而對于我們普遍使用的路由器功能,網管們是否已經把路由的功能價值發揮出來了呢?下面我們為大家來介紹路由>>>詳細閱讀


        本文標題:SPDY協議簡介及如何編譯含有SPDY的nginx

        地址:http://www.hnbrwh.com/luyou/34153.html

        關鍵詞: 探索發現

        樂購科技部分新聞及文章轉載自互聯網,供讀者交流和學習,若有涉及作者版權等問題請及時與我們聯系,以便更正、刪除或按規定辦理。感謝所有提供資訊的網站,歡迎各類媒體與樂購科技進行文章共享合作。

        網友點評
        自媒體專欄

        評論

        熱度

        精彩導讀
        欄目ID=71的表不存在(操作類型=0)
        成 人 黄 色 网站 小说 免费
        1. <strike id="voekh"><bdo id="voekh"></bdo></strike>
          <button id="voekh"><acronym id="voekh"></acronym></button>

          <s id="voekh"></s>

            <span id="voekh"></span>
          1. <li id="voekh"><acronym id="voekh"></acronym></li>
            <th id="voekh"></th>