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

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

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

    心有多大舞臺便有多大

    Embrace changes, pursue excellence, share niceness.

    關于http gzip壓縮的一點想法

    今天在路上偶爾想到,既然js,html,圖片等靜態內容可以通過http gzip壓縮的方式傳輸到瀏覽器(相對于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節省40%左右的流量),那用jsp,servlet等動態創建的內容是否也可以壓縮傳輸呢?還有AJAX的請求內容是否也可以用gziap壓縮傳輸?
    帶著這些問題在網上查了下資料
    AJAX的請求可以通過在http request中增加一個頭標識:accept-encoding,值為"gzip"的方式實現
    servlet則可以通過配置一個filter來實現
    針對Apache2.0之前的版本,可以通過添加第三方的module_gzip模塊來啟用
    針對Apache2.0及之后的版本,可以通過mod_deflate啟動


    下面的一個鏈接詳細介紹了apache,tomcat中的配置方法:
    http://www.128kj.com/article/article5/DA6B1D7BCDE9DE999C34E7379E18B35A.htm?id=2746
    http://blogger.org.cn/blog/more.asp?name=lhwork&id=21867

    用tomcat 6的可以到下面的url參考:
    http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

    在tomcat的server.xml的connector部分,把compression="force"選項加上,然后,就可以用下面的代碼測試,我是在demo應用下放了個md5.js:

    /**
     * Created at 2008-03-21.
     */
    package com.demo.test.http.gzip;

    import junit.framework.TestCase;

    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.methods.GetMethod;

    /**
     * @author pony

     * 如果有任何對代碼的修改,請按下面的格式注明修改的內容.
     * 序號   時間       作者        修改內容
     * 1.  2008-3-21 pony created this class.
     *
     */
    public class TestTomcatGzipConfigure extends TestCase {
     public void testGetGzipContentFromTomcat() throws Exception {
      HttpClient http = new HttpClient();
      GetMethod get = new GetMethod("http://192.168.66.128:8080/demo/md5.js");
      try {
       get.addRequestHeader("accept-encoding", "gzip,deflate");
       get.addRequestHeader(
           "user-agent",
           "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)");
       int er = http.executeMethod(get);
       if (er == 200) {
        System.out.println(get.getResponseContentLength());
        String html = get.getResponseBodyAsString();
        System.out.println(html);
        System.out.println(html.getBytes().length);
       }
      } finally {
       get.releaseConnection();
      }
     }
    }



    posted on 2008-03-21 12:52 pony 閱讀(5606) 評論(3)  編輯  收藏 所屬分類: Java

    評論

    # re: 關于http gzip壓縮的一點想法 2008-03-25 17:38 pony

    網站性能優化的時候,一方面要把眼光放在服務器端的優化上,同時,也不要忘了在客戶端瀏覽器的優化
    例如,可以把一些渲染的邏輯放到客戶端瀏覽器中用js實現.
    另外,我記得曾跟一個朋友說,網站在很多方面其實就是一種用戶行為藝術,應該更多的考慮用戶的行為習慣.盡量把一些業務相關但與用戶體驗無關的操作用異步AJAX去實現.
    另外,其實很多時候,性能的問題是由數據庫訪問不當造成的.  回復  更多評論   

    # re: 關于http gzip壓縮的一點想法[未登錄] 2008-03-26 10:05 pony

    今天看到一篇關于優化瀏覽熟讀的文章,大意是:
    1.一個典型的網頁,是由一個 html 文件和內嵌的各類元素組成的,這些元素包括頁面內的圖片,css 文件,javascript 文件等等。每一個內嵌的元素在 HTTP 協議的層面上和那個 html 文件是沒有區別的:也就是都需要瀏覽器去服務器上抓下來。一個早期典型的瀏覽器是這樣實現的:當用戶敲入網址之后,瀏覽器和服務器建立連接,請求這個 html 頁面,然后邊接收服務器發送的 html 頁面,邊解析,碰到內嵌元素,可以立即開第二條連接請求。另外,如果內嵌元素很多,他可能會開多條連接同時請求。當所有需要的元素都下載完畢之后,瀏覽器就會將頁面畫出來。這個過程就是最早期的 HTTP/1.0 協議所設想的瀏覽器實現。

    2.由于上面的基于TCP的3次握手的通訊方式對于http數據傳輸來說存在極大的浪費,每個元素都需要單建一條連接就會導致網絡上大量的都是 TCP 建立連接和斷開連接的網絡包.而且,TCP 連接尋找最優網絡包大小的方法是,在 TCP 連接建立的初期,網絡包的大小是很小的,根據網絡狀況,兩端的程序才會逐步增大網絡包的大小以適應帶寬提高網絡傳輸的效率。所以瀏覽器給服務器發請求,如果每發一個請求就關閉連接的話,那這個連接的數據傳輸很難達到帶寬所能承載的速度。

    3.基于這種種原因,HTTP/1.1 很快出來了,提出了持久連接(persistent connection)的概念,也就是說同一條 HTTP 連接,可以同時處理多個請求,同時用一定的機制保證各個請求之間的分離性。具體的操作過程是:服務器給瀏覽器發送回應之后,并不馬上關閉連接;瀏覽器判斷上一個請求的回應已經收完的情況下,可以在這同一個連接上發第二個請求。這種運作模式大大減少了網絡包

    4.持久連接可以進一步提速。這就是 pipelining 了。上面可以看到,瀏覽器需要等待持久連接里上一個請求的回應完全收完才能發送后面的請求。如果和服務器的連接比較慢,往往持久連接大部分時間都花在等待而非數據發送/接收上。pipelining 的意思是,瀏覽器可以在一個持久連接里一次給服務器發送多個請求,服務器在這個連接上依次回應這些請求。這種運作方式和瀏覽器緩存結合起來的時候會尤其有效果。比方,圖片瀏覽過后會存在瀏覽器緩存中,再次請求的時候瀏覽器會對服務器說,我這里已經有這個圖片的緩存了,修改時間是XXXX,如果服務器上這個圖片在這之后沒有修改過,就不用重發了

    5.在firefox中如果修改pipelining的設置呢?
    打開firefox后,在地址欄中輸入:about:config,就可以看到firefox的默認參數設置了.然后查找pipelining,雙擊可以修改參數的配置.
    network.http.pipelining true

    詳細內容可以參考下面的連接:
    http://www.acfield.net/bbs/archiver/?tid-56887.html
      回復  更多評論   

    # re: 關于http gzip壓縮的一點想法[未登錄] 2008-03-27 14:27 pony

    參考http://www.91linux.com/html/article/program/php/20071221/9291.html
    可以看到更多的關于http頭信息,通過在http頭中設置一些參數,也可以達到優化的目的.  回復  更多評論   

    主站蜘蛛池模板: 亚洲乱码av中文一区二区| 亚洲国产无线乱码在线观看 | 亚洲欧洲成人精品香蕉网| 亚洲视频精品在线| 亚洲色www永久网站| www免费黄色网| 亚洲1区1区3区4区产品乱码芒果| 亚洲高清无在码在线无弹窗| 色天使色婷婷在线影院亚洲| 国产精品亚洲精品日韩电影| 国产精品99久久免费观看| 免费毛片在线播放| 免费爱爱的视频太爽了| 亚洲av无码不卡| 日韩在线视精品在亚洲| 222www免费视频| 国产一区二区三区在线免费观看 | 精品亚洲AV无码一区二区| h片在线观看免费| 巨胸喷奶水视频www网免费| 国产亚洲综合一区柠檬导航| 亚洲欧美第一成人网站7777 | 亚洲精品无码专区久久久| 亚洲日韩一中文字暮| 久久大香伊焦在人线免费| 免费国产a国产片高清网站| 亚洲av区一区二区三| 亚洲性日韩精品一区二区三区 | 色婷婷亚洲一区二区三区| 91精品成人免费国产片| 日本免费高清一本视频| 自拍偷自拍亚洲精品情侣| 亚洲黄色免费在线观看| a高清免费毛片久久| 国产成人免费a在线视频色戒| 亚洲深深色噜噜狠狠爱网站| 亚洲AV日韩AV一区二区三曲| 国产一区二区免费视频| 毛片免费vip会员在线看| 久久综合亚洲色HEZYO国产| 亚洲youwu永久无码精品|