Tomcat如何启用GZIP压缩

在实际WEB应用的开发中,经常会遇到网页加载速度过慢的情况,有时候可能是因为网络不好导致的,但是我们可以通过对数据的压缩处理来让网页即使在网络不好的情况下也能加快显示速度

jesen
1
2020-03-24 07:00:19
文档目录
我的书签
 

为什么要启用GZIP压缩?

一、遇到的问题
        在做一个电商ERP项目中,有一个页面没有使用分页功能,一下子加载了好几百条数据,数据大小达到了2M,加载了十几秒才渲染完毕(由于我用的服务器带宽也不多可能1M吧),客户那边反馈过来速度慢的问题,然后我就思考了一下整个程序流程,首先在数据返回中对数据进行了精简(不需要的数据就不进行返回),而后我想到了一个功能就是压缩功能,之前在nginx中使用到了gzip压缩的功能,想到了是否在tomcat(这个项目使用的是tomcat)中也可以使用,这样不就更好了么

二、压缩原理
        HTTP协议中的压缩可以很大方面提高网页的加载速度;压缩的流程为,客户端请求服务器相应资源文件,服务器端将相应资源文件进行压缩,再输出到客户端,由客户端的浏览器负责解压缩。

三、HTTP支持的压缩格式
      HTTP协议定义了一些标准的内容编码类型,并允许用扩展的形式添加更多的编码。Content-Encoding header 就用这些标准化的代号来说明编码时使用的算法,Content-Encoding 值

  1. gzip  表明实体采用GNU zip编码
  2. compress 表明实体采用Unix的文件压缩程序
  3. deflate 表明实体是用zlib的格式压缩的
  4. identity 表明没有对实体进行编码。当没有Content-Encoding header时, 就默认为这种情况
  5. gzip, compress, 以及deflate编码都是无损压缩算法,用于减少传输报文的大小,不会导致信息损失。 其中gzip通常效率最高, 使用最为广泛。

四、开启压缩的优点

  1. 通过减小HTTP响应大小来减少响应时间
  2. 相对于普通的页面显示(HTML,CSS,Javascript,文本),压缩可以节省40%~60%左右的流量
  3. 对动态生成的,包括CGI、PHP , JSP , ASP , Servlet, SHTML等输出的网页也能进行压缩,压缩效率也很高

五、开启压缩的缺点

  1. 服务器增加性能消耗(CPU、内存等)
  2. 客户端增加性能消耗(解压缩逻辑增加了实际和空间成本)
  3. 时间空间的对称理论,如果想要时间快那么空间肯定要消耗多,如果想要空间小那么时间肯定要使用长,(压缩比=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小)

本文是针对 apache-tomcat-7.0.91-windows-x64 进行配置GZIP压缩的。浏览器使用360极速浏览器

在Tomcat中配置GZIP压缩

一、打开Tomcat安装目录,找到配置文件%TOMCAT_HOME%/conf/server.xml,修改如下参数:

<Connector port="80"
  protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" 
  compression="on" 
  compressionMinSize="2048" 
  noCompressionUserAgents="chrome,webkit"   
  compressableMimeType="text/html,text/xml,text/javascript,application/javascript,text/css,text/plain,application/json"/>

参数说明:
  1、compression="on" 开启压缩。可选值:"on"开启,"off"关闭,"force"任何情况都开启
  2、compressionMinSize="2048"大于2KB的文件才进行压缩。用于指定压缩的最小数据大小,单位B,默认2048B。注意此值的大小,如果配置不合理,产生的后果是小文件压缩后反而变大了,达不到预想的效果
  3、noCompressionUserAgents="chrome,webkit",对于这两种内核的浏览器,不进行压缩,其值为正则表达式,匹配的UA将不会被压缩,默认空
  4、compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain" 会被压缩的MIME类型列表,多个逗号隔,表明支持html、xml、js、css、json等文件格式的压缩(plain为无格式的文本内容)。compressableMimeType很重要,它用来告知tomcat要对哪一种文件进行压缩,如果类型指定错误了,肯定是无法压缩的。浏览器支持的所有的MIME类型,可以在系统查找相应的文章即可查看

错误排查与优化结果

一、可能遇到的错误
  1. Tomcat中的配置参数位置写错。注意配置参数参考下图
  2. 配置了压缩,数据返回后却没有压缩,可能是由于compressableMimeType参数配置的类型不正确,可以参考本站介绍HTTP中MIME类型的文章
  3. 响应数据的大小小于compressionMinSize的配置值
  4. 没有重启Tomcat服务器
二、优化的前的请求数据状态



三、优化后的请求数据状态




 
友情提示