tomcat如何启用Gzip对静态文件压缩

原创 2016年08月29日 15:55:45

网页压缩

是一项由 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中的配置,客户端及服务端均不用再做其它改动。

原理介绍

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。

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

tomcat配置

找到 tomcat server.xml文件里的,例如:

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URIEncoding="utf-8"
               compression="on"       
               compressionMinSize="8190"   
               noCompressionUserAgents="gozilla,traviata"  compressableMimeType="text/html,text/xml,application/javascript,text/javascript,text/css,text/plain,application/json" useSendfile="false"  
               />

验证是否生效

启用了TOMCAT这个压缩功能后,我们如何来测试压缩是否有效呢?

方法一:使用浏览器测试

按 f12 打开浏览器的控制台(这里使用的是 webkit 内核的浏览器),点击network栏,再刷新页面,点击最开始的配置中设置需要 gzip 的文件类型中的任意一个,出现下图中所示两点即为成功:

这里写图片描述

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

需要引入的jar包:httpcore-4.2.4.jar,httpclient-4.2.5.jar
这里提供一个HttpClient所需非常全的jar包(httpclient-4.2.5.jar)的下载地址:httpclient-4.2.5.jar

package com.test.app;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

/**
 * 类说明:测试gzip是否配置成功
 * @author:pgf
 * @date:  2016-8-29上午11:05:34
 */
public class Test {
    public static void main(String[] args)
    {
      String uri = "http://localhost:8080//test//defaults//js//jquery-1.9.1.min.js";
      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();   
      }

    }
}

执行这个测试程序,如果gzip生效,这里会打印出乱码;否则会打印出jquery.js的内容,那么说明配置生效了。

用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能

一、搭建开始前的准备 1、我用的MyEclipse2014版,大家也可以用IDEA。 2、下载Tomcat(免安装解压包)、MySQL(zip包下载地址 免安装解压包,好处就是双击启动,最后我会把ba...

IIS启用GZip压缩JS等extjs静态文件

IIS启用GZip压缩extJS静态文件 采用EXT作为前端框架后,一个缺点就是extjs类库文件比较大,超过1M,在内网应用问题不突出,在外网使用,首次加载要8~20秒,有时网速不好,加载就更慢了,...

Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享

Nginx安装nginx-1.10.1.tar.gz安装,参考http://blog.csdn.net/tototuzuoquan/article/details/47381907。修改nginx.c...

nginx 预压缩(gzip)静态文件

对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存,那能减少这种浪费。但不是每个生产环境前端都有缓存的。而n...
  • ebw123
  • ebw123
  • 2014年11月21日 18:45
  • 749

web系统js、css文件终极提速之gzip静态压缩+动态压缩

首先转载一个静态方法web系统中免不了要使用大量的javascript和css文件,如开源的javascript框架prototype、jquery、extjs-core等等,这些js框架,少都有几百...
  • xzknet
  • xzknet
  • 2012年03月31日 16:06
  • 10781

Apache 开启Gzip压缩——可压缩js、css等静态文件

今天搞这个压缩搞了好久,网上的很多都是千篇一律….唉。经过几个小时努力,终于压缩成功,除了能压缩php以外还能压缩css、js等静态文件。关于gzip压缩的好处我这就不说了,相信你已经知道。进入正题配...

设置TOMCAT启用GZIP压缩

启用TOMCAT的Gzip压缩功能

背景:HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Ja...
  • so1127
  • so1127
  • 2013年08月29日 13:31
  • 510

设置TOMCAT启用GZIP压缩

原理简介         HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的...

Tomcat启用Gzip压缩

tomcat启用gzip压缩
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat如何启用Gzip对静态文件压缩
举报原因:
原因补充:

(最多只允许输入30个字)