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

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

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

    心有多大舞臺(tái)便有多大

    Embrace changes, pursue excellence, share niceness.

    關(guān)于http gzip壓縮的一點(diǎn)想法

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


    下面的一個(gè)鏈接詳細(xì)介紹了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"選項(xiàng)加上,然后,就可以用下面的代碼測(cè)試,我是在demo應(yīng)用下放了個(gè)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

     * 如果有任何對(duì)代碼的修改,請(qǐng)按下面的格式注明修改的內(nèi)容.
     * 序號(hào)   時(shí)間       作者        修改內(nèi)容
     * 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) 評(píng)論(3)  編輯  收藏 所屬分類: Java

    評(píng)論

    # re: 關(guān)于http gzip壓縮的一點(diǎn)想法 2008-03-25 17:38 pony

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

    # re: 關(guān)于http gzip壓縮的一點(diǎn)想法[未登錄] 2008-03-26 10:05 pony

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

    2.由于上面的基于TCP的3次握手的通訊方式對(duì)于http數(shù)據(jù)傳輸來說存在極大的浪費(fèi),每個(gè)元素都需要單建一條連接就會(huì)導(dǎo)致網(wǎng)絡(luò)上大量的都是 TCP 建立連接和斷開連接的網(wǎng)絡(luò)包.而且,TCP 連接尋找最優(yōu)網(wǎng)絡(luò)包大小的方法是,在 TCP 連接建立的初期,網(wǎng)絡(luò)包的大小是很小的,根據(jù)網(wǎng)絡(luò)狀況,兩端的程序才會(huì)逐步增大網(wǎng)絡(luò)包的大小以適應(yīng)帶寬提高網(wǎng)絡(luò)傳輸?shù)男省K詾g覽器給服務(wù)器發(fā)請(qǐng)求,如果每發(fā)一個(gè)請(qǐng)求就關(guān)閉連接的話,那這個(gè)連接的數(shù)據(jù)傳輸很難達(dá)到帶寬所能承載的速度。

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

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

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

    詳細(xì)內(nèi)容可以參考下面的連接:
    http://www.acfield.net/bbs/archiver/?tid-56887.html
      回復(fù)  更多評(píng)論   

    # re: 關(guān)于http gzip壓縮的一點(diǎn)想法[未登錄] 2008-03-27 14:27 pony

    參考http://www.91linux.com/html/article/program/php/20071221/9291.html
    可以看到更多的關(guān)于http頭信息,通過在http頭中設(shè)置一些參數(shù),也可以達(dá)到優(yōu)化的目的.  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 99在线视频免费观看| 99久热只有精品视频免费看| 亚洲欧洲∨国产一区二区三区| 在线视频网址免费播放| 亚洲福利视频导航| 热99re久久免费视精品频软件| 中国性猛交xxxxx免费看| 亚洲色欲色欲www| 亚洲桃色AV无码| 一区二区无码免费视频网站| 人妻18毛片a级毛片免费看| 亚洲精品日韩专区silk| 亚洲 国产 图片| 在线观看的免费网站无遮挡| 黄色网址大全免费| 久久久久se色偷偷亚洲精品av| 亚洲一区二区三区免费| 成视频年人黄网站免费视频| 中国好声音第二季免费播放| 亚洲欧美黑人猛交群| 亚洲人成电影在线天堂| 亚洲第一区精品观看| 成人免费视频网站www| h在线看免费视频网站男男| 亚洲中文字幕乱码熟女在线| 久久精品视频亚洲| 亚洲日韩VA无码中文字幕 | 2021国内精品久久久久精免费| 日韩亚洲综合精品国产| 亚洲中文字幕人成乱码| 亚洲一区精品中文字幕| 亚洲人成网站18禁止一区| 黄网址在线永久免费观看 | 色吊丝性永久免费看码| 亚洲国产亚洲片在线观看播放| 亚洲精品午夜国产VA久久成人| 国产成人免费ā片在线观看| www.黄色免费网站| 每天更新的免费av片在线观看| 中文精品人人永久免费 | 野花高清在线电影观看免费视频 |