Tomcat 开启 gzip , Spring Boot 启用Gzip压缩

一、原理介绍

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

二、Tomcat 配置

找到 tomcat server.xml文件里的

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
              useBodyEncodingForURI="true"
              URIEncoding="UTF-8"
                />

改为:

<Connector port="80" protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  useBodyEncodingForURI="true"
                  URIEncoding="UTF-8"
                  compression="on"
                  compressionMinSize="2048"
                  noCompressionUserAgents="gozilla,traviata"
                  compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"
                    />
  • compression="on" 打开压缩功能
  • compressionMinSize="50" 启用压缩的输出内容大小,默认为2KB
  • noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩
  • compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩
    重启 tomcat 即可

三、测试

1. 外网环境

如果你有外网环境,可直接借用第三方的工具进行检测:
http://tool.chinaz.com/Gzips/
这里给出的是站长之家的一个链接,直接在里面输入网址即可,会告诉你是否启用 gzip,以及压缩率是多少。

2. 内网环境

上述方法只适用于有外网环境的机器测试,如果是内网环境还有个简单的方法可以进行判断:

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

 Spring Boot 启用Gzip压缩

有两点需要注意

1、需要在application.properties里启用压缩,并设置压缩支持的格式(默认支持text/html等,但不支持application/json)

server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain

2、默认情况下,仅会压缩2048字节以上的内容

#默认就是2048 byte
server.compression.min-response-size=2048

以上内容,详见 org.springframework.boot.context.embedded.Compression

以及 org.springframework.boot.autoconfigure.web.ServerProperties

另外,这个设置本身是由servlet container提供的,所以,也可以在tomcat等的设置里找到。

对tomcat来说,在server.xml 的HTTP/1.1的connector节点中设置:

复制代码

<!-- 这里的压缩设置,是默认的 -->
<Connector port="8888" protocol="HTTP/1.1" 
               connectionTimeout="21000" 
               redirectPort="28080" 
               URIEncoding="UTF-8"
               compression="on"  
               compressionMinSize="50"
               noCompressionUserAgents="gozilla, traviata"  
               compressionMinSize = “2048”
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />

复制代码

gzip

但是这个方法不能检测到 gzip 的压缩率。
笨一点的办法也有,点击这个面板中的Response,把里面内容复制到一个文本文件中,保存,看文件的大小,再相除。



作者:lancelot_lewis
链接:https://www.jianshu.com/p/d864fa98216e
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/oZuoLuo123/article/details/88191013