emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          原文 Use compression to make the web faster


          壓縮,讓網絡更快

          作者: By Arvind Jain, Engineering Director and Jason Glasgow, Staff Software Engineer

          簡介

          互聯網上,每天有超過99人年浪費在下載未經壓縮的內容上面。雖然支持壓縮已經是每個現代的瀏覽器的標準功能了,但是它們的使用者們往往還是由于這樣那樣的原因不能下載到壓縮的數據。這樣就造成了帶寬浪費并且拖慢了用戶和網頁的交互。

          數據不壓縮對所有的使用者都是一種傷害。對于窄帶用戶,下載那些多余的數據花費了更多的時間。而對于寬帶用戶,雖然數據傳輸非常快,但是在進入所能達到的最高速的數據傳輸之前,不壓縮的數據也需要更多的網絡間往返(IP包)(emu注:這里指的大概是寬帶用戶在訪問多媒體網站時,在高速下載多媒體內容之前,需要先下載網頁、css和腳本的資源),這種情況下,網絡間的往返次數(IP包個數)在裝載一個完整的網頁所需要的時間中是一個比網速更大的影響因素。即使網絡狀況非常好的用戶哪里,這些多余的網絡間往返也經常會多耗費數十甚至上百毫秒的時間。

          Steve Souders 的《Even Faster Web Sites》里面,Tony Gentilcore用數據展現出了禁止壓縮時頁面裝載時間的增加的情況。在得到了許可后,我們也重現了其總三個Alexa 排名最高等級的網站的測速結果:

          網站

          Alexa 排名

          下載時間增長量(首次打開時)

          頁面加載時間增長
          (1000/384 Kbps DSL)(寬帶)

          頁面加載時間增長
          (56 Kbps modem)(窄帶)

          www.google.com

          1

          10.3KB (44%)

          0.12(12%)

          1.3 (25%)

          www.facebook.com

          2

          348 KB (175%)

          9.4 (414%)

          63(524%)

          www.yahoo.com

          3

          331 KB (126%)

          1.2 (64%)

          9.4 (137%)

          數據來自Steve Souders的《 Even Faster Web Sites》中的9章:超越Gzip壓縮,經過作者許可。

          Googleweb搜索日志也顯示,下載未經壓縮數據的用戶比下載壓縮數據的用戶評價多花費25%的頁面裝載時間。在一個隨機試驗中,我們強行給一些(聲稱)不接受壓縮數據的用戶推送了壓縮數據,結果我們測量到它們的頁面延遲有300毫秒的提升。不過這個試驗不能完全說明問題,因為這些被強行推送壓縮數據的用戶中有一些可能是誤傷的,因為它們可能真的是在比較老式的計算機上使用比較老的(不支持壓縮的)軟件(后面會講到,更多的可能并非如此)。

          它們為啥不支持壓縮?

          我們發現有4種常見的原因導致用戶接受不到壓縮內容:殺毒軟件,瀏覽器缺陷,網絡代理和服務器配置錯誤。前面3種影響了網絡請求導致了網絡服務器不知道瀏覽器其實能解壓內容,尤其是它們錯誤的吧瀏覽器本來應該在每個請求中發送給服務器的Accept-Encoding 這個http頭給去掉或者破壞了。

          殺毒軟件可能是為了減少cpu占用,對網絡請求進行了攔截和篡改,這樣服務器就會發送不壓縮的數據給客戶端(這樣它們就不用先解壓后查毒而可以直接查毒了)。但是,如果CPU是系統的性能瓶頸,那么殺毒軟件這樣做根本不是在幫忙而是在添亂。一些著名的殺毒軟跟網絡壓縮有沖突。網友們自行可以到Browserscope.org上的瀏覽器壓縮支持測試頁面上驗證一下自己的殺毒軟件是否和網絡壓縮有沖突。

          默認情況下IE6瀏覽器在通過代理服務器訪問網絡的時候會降級通訊協議為HTTP/1.0(在IE6的工具——Internet選項——高級 中的第2個選項叫做“  通過代理連接使用 HTTP 1.1  ” ),其結果就是不會發送一個Accept-Encoding的請求頭部。下面的表格是從Google的網絡搜索日志中生成出來的,顯示出來自IE6的搜索在所有未聲明接受壓縮結果的搜索中占了36%。這個比例比IE6的實際使用比例要高。

          瀏覽器

          搜索結果中要求不壓縮的比例

          在所有未聲明支持壓縮的搜索中所占的比例

          Google Chrome

          1

          1

          Safari

          1

          1

          Firefox 3.5

          3

          4

          Internet Explorer 8

          6

          5

          Firefox 3.0

          6

          7

          Other

          46

          22

          Internet Explorer 7

          7

          24

          Internet Explorer 6

          20

          36

          數據來自Google網絡搜索日志

          還有那么一小撮ISP,它們的未壓縮內容(未聲明接受壓縮的請求)的比例超過了95%。一個看起來有道理的假設是,這些ISP或者公司代理去掉或者篡改了Accept-Encoding這個HTTP頭部。和殺毒軟件的情況一樣,懷疑自己的ISP和網絡壓縮有沖突的網友們自行可以到Browserscope.org上的瀏覽器壓縮支持測試頁面上驗證一下。

          最后還有一種情況,用戶下載到了未經壓縮的內容是因為訪問的網站根本就不壓縮內容。下面的表格顯示了幾個不壓縮內容的流行站點。這些網站要是壓縮它們的內容,它們平均可以給每個訪客減少數百毫秒的頁面加載時間,對于那些窄帶用戶影響更為明顯。


          網站 資源類型 可壓縮的字節數
          www.cnn.com CSS and JavaScript 330 kB
          www.twitter.com CSS and JavaScript 40 kB
          www.bbc.co.uk CSS and JavaScript 201 kB

          數據使用Page Speed生成

          該怎么做?

          為了減少未壓縮的數據,我們需要一起努力

          · 公司里的IT部門和獨立的個人用戶可以升級瀏覽器,尤其是用IE6通過代理服務器上網的用戶。使用最新版本的 FirefoxInternet ExplorerOperaSafari, 或者 Google Chrome 可以增加下載到壓縮后數據的機會。一份最近的IEEE分析期刊社論中列出了更多的——除了壓縮之外——的升級掉IE6瀏覽器的理由。

          · 殺毒軟件供應商可以開始正確的解決壓縮問題,在后續的發行版中停止篡改和刪除Accept-Encoding這個HTTP頭部。

          · 那些使用http代理并且把Accept-Encoding這個HTTP頭部篡改或者剝離掉的ISP們,可以升級、重新配置或者安裝一個好一點的不會禁止用戶使用壓縮功能的代理服務器。

          · 網絡管理員們可以用Page Speed(或者其他類似的工具)來檢測自己的網頁內容是否是經過壓縮的。

          posted on 2010-02-18 17:00 emu 閱讀(3953) 評論(1)  編輯  收藏 所屬分類: web優化

          評論

          # re: [翻譯] 壓縮,讓網絡更快 2010-02-21 12:55 caoshijun
          哥們,單純一個IE6就能搞死你,要全部壓縮,等大家都不用IE6了再說吧。

          精細靈巧并不一定勝過簡單粗暴。  回復  更多評論
            

          主站蜘蛛池模板: 潜山县| 朔州市| 甘孜县| 旅游| 石台县| 女性| 青浦区| 冀州市| 深圳市| 高平市| 渑池县| 奈曼旗| 喀喇沁旗| 延寿县| 闵行区| 宜黄县| 五莲县| 谷城县| 高陵县| 阳原县| 中超| 岐山县| 鲜城| 潢川县| 来安县| 隆化县| 凤凰县| 颍上县| 隆林| 文昌市| 抚松县| 千阳县| 苍南县| 萨迦县| 余江县| 城市| 定州市| 马山县| 宣威市| 辽中县| 朝阳市|