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
页:
[1]