网站优化之Tomcat启用Gzip压缩
博客链接:zjlbog
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个参数即可。
将
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
修改为
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" 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等文件格式的压缩
还有其他配置,比如:
useSendfile = "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中也进行压缩配置。如下:
<!--证书配置 --> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="*****" maxThreads="*****" scheme="https" secure="*****" keystoreFile="*****" keystorePass="*****" clientAuth="*****" sslProtocol="*****" connectionTimeout="*****" redirectPort="*****" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json" />
保存再重启tomcat,发现已经好了。启用成功!
去站长工具查也有了
然后对比下效果还是不错的。
压缩前
压缩后
原文地址:https://www.cnblogs.com/sunonzj/p/12171502.html
- 论如何高效的挖掘漏洞
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
- 走进科学:如何正确的隐藏自己的行踪
- 比特儿(Bter.com) 比特币交易平台被盗事件全解析
- BitTorrent Bleep:无法被监控的聊天软件
- QQ蠕虫的行为检测方法
- 趋势OfficeScan系列产品漏洞分析
- [置顶] 浅谈我为什么选择用Retrofit作为我的网络请求框架
- 基于HTML5的Canvas指纹跟踪技术
- 有关 Android 应用桌面角标 (BadgeNumber) 实现的探讨
- XSS的原理分析与解剖
- Hold安全公司公布俄罗斯大型泄密事件细节
- 走近科学:如何搞定各种各样的终端机
- android 打造不同的Seekbar
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 前端黑魔法之远程控制地址栏
- 攻击LNMP架构Web应用的几个小Tricks
- Hbase-2.0.0_02_常用操作
- phpjiami 数种解密方法
- Hbase-2.0.0_03_Hbase数据模型
- ELK-elasticsearch-6.3.2部署
- Real World CTF 2018 bookhub 总结
- python http.server open redirect vulnerability
- ELK-elasticsearch-6.3.2插件【head,bigdesk,cerebro[kopf]】安装
- ELK-kibana-6.3.2部署
- node.js + postgres 从注入到Getshell
- ELK-logstash-6.3.2部署
- K8S节点异常怎么办?TKE"节点健康检查和自愈"来帮忙
- ELK-logstash-6.3.2-常用配置
- ELK-elkstack-使用消息队列