网站启用gzip压缩
gzip压缩启用不启用还是要看实际情况的,启用gzip后可以相应的减轻带宽压力但是同时也会增加cpu的压力(压缩解压),相反的如果不启用那么cpu压力也会相应的减少,具体情况具体分析.
Linux开启gzip很简单
找到tomcat下conf目录
编辑server.xml文件
vim server.xml
找到Service节点下的Connector
新增四个属性
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"//是否启用压缩
compressionMinSize="2048"
noCompressionUserAgents=""
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
/>
compression="on"//是否启用压缩
compressionMinSize="2048"//只有超过当前设置数值大小的页面才启用压缩(单位是字节B)如果不指定默认大小为2048
------------------------------eg:begin------------------------------
比如我就想看这个index.html页面的压缩效果,这里的158953就可以作为compressionMinSize这里设置的值,接下来实验一下
1).compressionMinSize="158952",理论上页面就会压缩,因为158953超过了158952
实际效果
谷歌浏览器
size上面是最终请求的大小下面是实际大小
火狐浏览器
发现压缩已经生效
2).接下来改成compressionMinSize="158954"
实际效果
谷歌浏览器
火狐浏览器
没有压缩,OK.
3).compressionMinSize="158953"
如果是相等的话也不会压缩,有兴趣的可以去试试
------------------------------eg:end------------------------------
noCompressionUserAgents=""这些浏览器中不启用压缩,值为一个正则表达式(用java.util.regex去匹配)
------------------------------eg:begin------------------------------
因为我手头只有谷歌浏览器跟火狐浏览器,IE我现在已经抛弃了,就拿谷歌来测试一下
字段的意思是"不压缩的user-agent",user-agent 用过谷歌.火狐的开发者工具的人应该都知道在哪看当前一个请求的user-agent
谷歌里
火狐里
接下来准备实验的目的就是在谷歌里不压缩在火狐里压缩
1).首先我需要写个正则匹配一下谷歌浏览器的user-agent
public static void main(String[] args) {
boolean matches = java.util.regex.Pattern.matches(".*Chrome.*?", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
System.out.println(matches);
}
输出结果
true
2).设置一下server.xml
compressionMinSize="158951"
noCompressionUserAgents=".*Chrome.*?"
重启服务器看效果
谷歌浏览器
没有压缩
火狐浏览器
还是处于压缩状态中,也OK
------------------------------eg:end------------------------------
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" 这个就没什么说的了需要压缩的资源类型
参考文章:https://examples.javacodegeeks.com/enterprise-java/tomcat/enable-gzip-compression-apache-tomcat/ 第七点,这里有些地方比我说的详细
如果对gzip原理感兴趣的也可以去百度谷歌上去搜搜看.
欢迎交流学习,如需转载请注明出处,谢谢.