<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 36, comments - 419, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    http請求頭的數據量

        我們先分析下請求頭,看看每次請求都帶了那些額外的數據.下面是監控的google的請求頭

        Host www.google.com.hk
        User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTBDFff GTB7.0
        Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language zh-cn,en-us;q=0.7,en;q=0.3
        Accept-Encoding gzip,deflate
        Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
        Keep-Alive 115
        Proxy-Connection keep-alive

       返回的response head

       Date Sat, 17 Apr 2010 08:18:18 GMT
       Expires -1
      Cache-Control private, max-age=0
       Content-Type text/html; charset=UTF-8
       Set-Cookie PREF=ID=b94a24e8e90a0f50:NW=1:TM=1271492298:LM=1271492298:S=JH7CxsIx48Zoo8Nn; expires=Mon, 16-Apr-2012 08:18:18 GMT; path=/;    domain=.google.com.hk NID=33=EJVyLQBv2CSgpXQTq8DLIT2JQ4aCAE9YKkU2x-h4hVw_ATrGx7njA69UUBMbzVHVnkAOe_jlGGzOoXhQACSFDP1i53C8hWjRTJd0vYtRNWhGYGv491mwbngkT6LCYbvg; expires=Sun, 17-Oct-2010 08:18:18 GMT; path=/;   domain=.google.com.hk; HttpOnly
       Content-Encoding gzip
     Server gws
     Content-Length 4344

       這里發送的請求頭的大小大概420 bytes,返回的請求頭大概 600 bytes。
        
       可見每次請求都會帶上一些額外的信息進行傳輸(這次請求中還沒有帶cookie),當請求的資源很小,比如1個不到1k的圖標,可能request帶的數據比實際圖標的數據量還大。
       
       所以當請求越多的時候,在網絡上傳輸的數據自然就多,傳輸速度自然就慢了。
      
       其實request自帶的數據量還是小問題,畢竟request能帶的數據量還是有限的。
      
    http連接的開銷

       相比request頭部多余的數據,http連接的開銷則更加嚴重。先看看從用戶輸入1個URL到下載內容到客戶端需要經過哪些階段:
       1. 域名解析
       2. 開啟TCP連接 
       3. 發送請求 
       4. 等待(主要包括網絡延遲和服務器處理時間)
       5. 下載資源
       
       可能很多人認為每次請求大部分時間都花在下載資源上,讓我們看看blogjava資源下載瀑布圖(每種顏色代表的階段與上面5個階段對應):
        
       

       看了上圖你可能驚訝,花費在等待階段的時間比實際下載的時間要多的多,上圖告訴我們:
          1. 每次請求花費的大部分時間在其他階段,而不是在下載資源階段
          2. 再小的資源照樣會花費很多時間在其他階段,只是下載階段會比較短(見上圖的第6個資源,才284Byte)。
          

      正對上面提到的2種情況,我們應該要怎么進行優化了?減少請求數來減少其他階段的花銷和網絡中傳輸的數據。

       
    如何減少請求數

      
    1、合并文件
         合并文件就是把很多JS文件合并成1個文件,很多CSS文件合并成1個文件,這種方法應該很多人用到過,這里不做詳細介紹,
         只推薦1個合并的工具:yuiCompressor 這個工具yahoo提供的。 http://developer.yahoo.com/yui/compressor/
      
      2、合并圖片
         這是利用css sprite,通過控制背景圖片的位置來顯示不同的圖片。這種技術也是大家都用過的,不做詳細介紹,推薦1個在線合并圖片的網站:http://csssprites.com/
         
      3、把JS、CSS合并到1個文件
         上面第1種方法說的只是把幾個JS文件合并成1個JS文件,幾個CSS文件合并成1個CSS文件,哪如何把CSS和JS都合并到1個文件中,見我的另1篇文章:
         http://www.tkk7.com/BearRui/archive/2010/04/18/combin_css_js.html
         
      4、使用Image maps
         Image maps 是把多個圖片合并成1個圖片,然后使用html中的<map>標簽連接圖片,并實現點擊圖片不同的區域執行不同的動作,image map在導航條中比較容易使用到。
         image map的使用方法見: http://www.w3.org/TR/html401/struct/objects.html#h-13.6
      
      5、data嵌入圖片
         這種方法把圖片進行編碼直接嵌入到html中進行使用,以減少HTTP請求,但這個會增加HTML頁面的大小,而且這樣嵌入的圖片不能緩存。見下面這個圖片:
      
          
         上面的圖片就是把圖片進行base64編碼后使用data:嵌入到html中,代碼如下(后面的省略了,大家可以查看源代碼看):
         <IMG SRC="data:image/gif;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAA......">

         其中google的視頻搜索中,搜索出來的視頻縮略圖就都是使用嵌入的圖片的,見下圖:
         
           
      
       
        
           以上幾種方法在都有利有弊,在不同情況下可以選擇不同的使用方式,比如使用data嵌入圖片雖然減少了請求數,但會增加頁面大小。

    所以微軟的bing搜索在用戶第一次訪問的時候使用data嵌入圖片,然后后臺懶加載真真的圖片,以后訪問就直接使用緩存的圖片,而不使用data。

        有需要請查 看:高性能WEB開發系列

    [作者]:BearRui(AK-47)
    [博客]: http://www.tkk7.com/bearrui/
    [聲明]:本博所有文章版權歸作者所有(除特殊說明以外),轉載請注明出處.
    英雄,別走啊,幫哥評論下:  

    精彩推薦 好文要頂 水平一般 看不懂 還需努力

    評論

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-18 19:38 by sevenduan
    減少請求一般是為了提高頁面渲染速度吧,瀏覽器支持的并發連接有限。
    為了減少請求可以合并文件,server端的文件合并解決方案可以用jawr。
    也可以考慮異步加載文件 或者 按需加載文件來減少渲染階段的請求。僅供參考。

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-18 19:47 by BearRui(AK-47)
    @sevenduan
    渲染速度 跟請求數沒直接關系,瀏覽器會根據HTML代碼生成DOM樹,并解析CSS來渲染頁面,所以DOM數的復雜度,CSS文件的加載,解析速度比較影響渲染速度,當然還會有其他因素,比如JS文件對DOM的修改等等。只能說請求數少了,頁面加載快了,瀏覽器可以提前進行渲染,不用等待太多資源。

    其實說白了,目的都是一樣,就是為了讓頁面盡快加載完呈現給用戶。請求數可能更加影響資源加載階段。 ^_^

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-19 13:54 by sevenduan
    @BearRui(AK-47)
    恩,render phase只是一個步驟,目的都是用戶體驗加速響應。
    一個頁面的加載渲染可以分批進行。
    初始化加載渲染后,
    可以繼續延遲加載或者異步加載,依次渲染頁面。
    關注中……

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-19 14:21 by BearRui(AK-47)
    @sevenduan
    目前對網絡的優化主要在資源加載這塊,等有時間好好研究下頁面熏染的優化,在寫點心得體會。

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-23 11:45 by 蔣家狂潮
    好文!

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-04-23 12:05 by BearRui(AK-47)
    @蔣家狂潮
    thanks ^_^

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-05-12 12:57 by 神級菜鳥
    JS與CSS合拼的方法并不可取,當你要管理JS時卻要連同CSS一齊管理,而且如果一個頁面引用一個JS庫,而這個JS庫里還要包含CSS。這樣做更得不償失

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-05-12 13:02 by BearRui(AK-47)
    S與CSS合并在一起,不是特別好,我認為主要不是因為不好管理,而是瀏覽器的支持問題。管理其實很簡單,因為開發的時候都是分開進行開發,只是在部署的時候使用工具進行統一合并,如何統一合并可參考我這篇文章:
    http://www.tkk7.com/BearRui/archive/2010/05/04/js_css_merge_compress_cache.html

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-05-12 14:05 by qml007
    那,首頁呈現時,A,一次請求,服務器返回所有 html代碼;B,服務器先釋出基本的靜態html,然後用多個ajax請求進行其餘html代碼的呈現。 哪種方法會好些?各有什麼優劣?

    # re: 高性能WEB開發 - 為什么要減少請求數,如何減少請求數!  回復  更多評論   

    2010-05-12 14:16 by BearRui(AK-47)
    @qml007
    這個我覺的主要決定于你頁面的內容,如果你的動態html代碼要花一些時間的話,建議先顯示部分html,然后用ajax加載其他的來呈現。如果你的動態內容使用緩存能很快生成,則一次請求OK

    記住要用戶第一,不能讓用戶在空白頁面中等很久,因為空白頁面用戶可能以為系統出問題,使用ajax至少可以提醒用戶系統真正處理。
    主站蜘蛛池模板: 看免费毛片天天看| 国产AV无码专区亚洲AV麻豆丫| 九九九精品成人免费视频| 国产亚洲综合色就色| 久久成人18免费网站 | 亚洲国产成人精品女人久久久 | 亚洲人成高清在线播放| 天天影视色香欲综合免费| 亚洲熟妇无码久久精品| 可以免费看黄的网站| 亚洲制服丝袜一区二区三区| 日本一区二区三区免费高清| 亚洲国产精品无码第一区二区三区 | 亚洲精品GV天堂无码男同| 夜夜嘿视频免费看| 亚洲国产精品无码观看久久| 亚洲精品视频免费观看| a级毛片100部免费观看| 久久亚洲AV成人无码软件| 永久免费av无码不卡在线观看 | 日木av无码专区亚洲av毛片| 18观看免费永久视频| 亚洲熟妇无码八V在线播放| 国产18禁黄网站免费观看| 成人自慰女黄网站免费大全| 在线观看亚洲人成网站| 成年午夜视频免费观看视频| 美女尿口扒开图片免费| 久久久久亚洲AV无码专区网站| 亚洲日韩精品无码专区加勒比| 国产成人一区二区三区视频免费| 成熟女人牲交片免费观看视频| 亚洲VA成无码人在线观看天堂| 国产AV日韩A∨亚洲AV电影| 亚洲国产美女精品久久久久∴| 国产精品国产亚洲区艳妇糸列短篇| 亚洲精品在线免费观看| 亚洲AV日韩AV一区二区三曲 | 亚洲国产精品国产自在在线| 久操免费在线观看| 精品国产日韩久久亚洲|