tomcat 起用Gzip 压缩网页数据

tomcat 启用Gzip 压缩网页数据

        网页压缩:是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,现在流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 tomcat、Apache 和 IIS 等。双方的协商过程如下:

1、首先浏览器请求某个URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议);
2、WEB 服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容;
3、浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。

所以若启用tomcat 的Gzip 压缩网页数据,只需修改tomcat中的配置,客户端及服务端均不用再做其它改动。

修改tomcat/conf/server.xml中tomcat访问端口8080的那个节点

配置gzip的属性有4个,分别如下:

compression:  off/on/force(不启用/启用压缩文本内容/强制压缩所有请求包含图片)
compressableMimeType: "text/html,text/xml,text/plain"(这是默认值,指定需要压缩的请求文档类型)
noCompressionUserAgents: 指定不需要压缩的浏览器Agent,使用逗号间隔
compressionMinSize: 2048 对小于该配置大小的文件不进行压缩(单位:B,也就是默认是2K)。注该属性自Tomcat7中有效

配置实例:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
    compression="on" 
    compressionMinSize="2048" 
    noCompressionUserAgents="gozilla,traviata"
    compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"
    URIEncoding="GBK" />



用httpclient来检测GZip压缩是否生效:

package test;

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

public class Test {

	public static void main(String[] args) {

		HttpClient http = new HttpClient();
		GetMethod get = new GetMethod("http://localhost:8080/test/test.jsp");
		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);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			get.releaseConnection();
		}

	}
}



        执行这个测试程序,看看它所输出的是什么内容,如果输出的是一些乱码,以及打印内容的长度远小于实际的长度,那么说明配置生效了,并且网站的浏览速度比以前会快很多。

检测GZip压缩的网站:

1、国外的:http://www.seoconsultants.com/tools/compression
2、国产的:
http://gzip.iamzz.com/
3、官方文档:http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#Standard_Implementation