一、原理介绍
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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。