分享

关于http gzip压缩的一点想法

 chanvy 2008-11-23
关于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./article/article5/DA6B1D7BCDE9DE999C34E7379E18B35A.htm?id=2746
http:///blog/more.asp?name=lhwork&id=21867

用tomcat 6的可以到下面的url参考:
http://tomcat./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();
  }
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多