tomcat的gzip压缩配置及优化效果对比

相关连笔记请点击《Tomcat配置Gzip无效

配置原因:

1.最近使用百度工具进行网站速度诊断时发现网站速度评分不是很理想,而网站速度对粉丝们的体验影响是非常直接的,故有了此文的优化配置。

当然这个只是一个优化点:其他优化点,以后陆续会添加上来,尽情关注,有其他需求的也可以留言。

实际操作

步奏一(配置):找到tomcat的server.xml文件,找到其中Connector节点然后进行配置修改,具体配置如下

1
2
3
4
5
6
7
< span style = "font-family:SimSun;" >< Connector port = "80" protocol = "HTTP/1.1"
            connectionTimeout = "20000"
            redirectPort = "8443" URIEncoding = "UTF-8"  maxPostSize = "0"
            useBodyEncodingForURI = "true" compression = "on"
            compressionMinSize = "2048"
            noCompressionUserAgents = "gozilla, traviata"
            compressableMimeType = "text/html,text/xml,application/javascript,text/css,text/plain,image/jpeg,application/json" /></ span >
1
2
3
4
5
6
< span style = "font-family:SimSun;" >参数说明:
compression="on"  打开压缩功能 
compressionMinSize="2048"  启用压缩的输出内容大小,当被压缩对象的大小>=该值时才会被压缩,这里面默认为2KB 
noCompressionUserAgents="gozilla, traviata"  对于以下的浏览器,不启用压缩 
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  压缩类型 
注意: tomcat7以后,js文件的mimetype类型变为了application/javascript,< span style = "color:#ff0000;" >而在tomcat7以下则为text</ span ></ span >< span style = "color:#ff0000;line-height: 1.5em; white-space: pre-wrap; font-family: SimSun;" >/javascript</ span >< span style = "color: rgb(51, 51, 51); line-height: 1.5em; white-space: pre-wrap; font-family: SimSun;" >;具体的tomcat7定义的类型可以在:conf/web.xml文件中找到。</ span >
1
< span style = "font-family:SimSun;" >可以在web.xml下搜索,如我搜索javascript会找到如下代码</ span >
1
2
3
4
< span style = "font-family:SimSun;" ></ span >< pre class = "brush:html;" >< span style = "font-family:SimSun;" >    < mime-mapping >
         < extension >js</ extension >
         < mime-type >< span style = "color:#ff0000;" >application/javascript</ span ></ mime-type >
     </ mime-mapping ></ span ></ pre >
切记上面的类型不能配置错了,如果配置错了压缩是不会起作用的。

步奏二(测试):

使用apache HttpClient访问该tomcat加载项目中的一个静态资源(比如一个js文件),然后打印请求的资源内容 或 资源ContentLength,

如果打印的资源内容为乱码 或 ContentLength为 -1,则说明gzip生效了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args)
{
   HttpClient httpClient = new DefaultHttpClient();
   HttpGet get = new HttpGet(uri);
   ResponseHandler<String> responseHandler = new BasicResponseHandler();
   
   try {
     // 设置模拟头部
     get.setHeader( "Accept-Encoding" , "gzip,deflate" );
     get.setHeader( "User-Agent" , "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36" );
     
     String content = httpClient.execute(get, responseHandler);
     System.out.println(content); // 如果gzip生效,这里会打印出乱码;否则会打印出jquery.js的内容
     
     /*
     HttpResponse response = httpClient.execute(get);
     long cLen = response.getEntity().getContentLength();
     System.out.println(cLen); // 如果gzip生效,这里打印的长度值将会是 -1 或一个比原始文件大小小很多的值
     */ 
     
   } catch (Exception e) {
     // ignore ...
   } finally {
     httpClient.getConnectionManager().shutdown();  
   }
   
}
下面配上本站优化前后百度诊断的的效果对比

下图是配置前的效果图


下图是配置后的效果图


通过上面的截图可以明显的看出,很多之前没压缩的文件都经过压缩了。但是bootstrap.min.css等个别css文件不知道为什么有没有起作用,

如果有知情的烦请在评论中告知下,如果我后续找到原因了我也将更新此博文。

注明:针对以上存在的bootstrap.min.css等文件未压缩的问题目前以前找到原因了具体请查看笔记

Tomcat配置Gzip无效

原因是tomcat启动了nio屏蔽了gzip功能,可以通过添加参数useSendfile="false"来强行启动gzip。

以下附上效果图。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值