Gzip概念
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来。即:通过减小HTTP响应大小来减少响应时间。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。
这样传输就快了,效果就是你点击网址后会很快的显示出来。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
Tomcat配置Gzip
开启tomcat的Gzip只需修改server.xml配置文件,在Connector中添加下面4个参数即可。
将
代码语言:javascript复制21<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" 2• connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
修改为
代码语言:javascript复制xxxxxxxxxx41<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" 2 connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"3 compression="on" compressionMinSize="2048" 4 noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>
compression="on"
开启Gzip压缩,默认为offcompressionMinSize="2048"
大于2KB的文件才进行压缩,对资源压缩时会消耗一定的cpu性能,对2KB以上的资源才进行压缩是官方给出的建议,实际使用时可以根据需求在响应时间和cpu性能之间做取舍;noCompressionUserAgents="gozilla, traviata"
,对于这两种浏览器,不进行压缩compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"
表明支持html、xml、js、css、json等文件格式的压缩
还有其他配置,比如:
代码语言:javascript复制xxxxxxxxxx11useSendfile = "false" //useSendfile属性默认为true, 会禁用任何可能的压缩, 改成false就好了(可不配置)tomcat默认设置是当数据大小达到48kb时,将启用文件传输(sendfile),所以我们想要压缩超过48kb的数据时必须将useSendfile设置为false
保存退出,重启Tomcat服务器即可。
但是我重启完发现并没有成功
。如果响应头有Content-Encoding: gzip
即为成功。
启动Gzip无效的原因
1、如果发现内容没有被压缩,可以考虑调整compressionMinSize大小,如果请求资源小于这个数值,则不会启用压缩。
2、响应数据不是compressableMimeType参数配置的类型。可打开浏览器检查控制台,查看响应头Content-Type的值是否配置在compressableMimeType。
3、tomcat中的配置参数写错位置了,配置错了。
但是我配置是正确的,没有以上的情况
然后经过一番查找,发现是因为我这是加密请求,使用的https,如果是http以上方法即可。https的话需要在port="443"的Connector中也进行压缩配置。如下:
代码语言:javascript复制xxxxxxxxxx101<!--证书配置 -->2 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="*****"3 maxThreads="*****" scheme="https" secure="*****"4 keystoreFile="*****"5 keystorePass="*****"6 clientAuth="*****" sslProtocol="*****" 7 connectionTimeout="*****" redirectPort="*****" URIEncoding="UTF-8"8 compression="on" compressionMinSize="2048" 9 noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"10 />
保存再重启tomcat,发现已经好了。启用成功!
去站长工具查也有了
然后对比下效果还是不错的。
压缩前
压缩后