Gzip(GNU zip)是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。Gzip是一种网络上使用非常普遍的数据压缩格式,大流量的web站点常常使用Gzip压缩技术来减少网络文件传输时间,以增强用户体验。
Tomcat5.0以后的版本提供了对输出内容进行Gzip压缩的支持,该功能默认是关闭的
1、启用
启用Gzip压缩,需要修改tomcat的配置文件 ${TOMCAT_HOME}/conf/server.xml
因为web站点从服务器传输超文本到本地浏览器的过程使用的Http协议,所以我们需要在HTTP Connector(HTTP连接器)上进行配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
在该Connector 上设置compression=”on”开启压缩支持(关闭为off,默认关闭)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on" />
2、设置
开启压缩的同时,我们还可以对压缩的参数进行配置
# 进行压缩的最小值,低于该值的文件不进行压缩(单位B,默认2048,即默认2k)
compressionMinSize="2048"
# 不需要进行压缩的浏览器,当浏览器类型为指定的类型时,不进行压缩
noCompressionUserAgents="gozilla,traviata"
# 需要压缩的文件类型(多个类型以逗号分隔)
compressableMimeType="text/html,text/xml,image/png,text/css"
3、示例:
我们有样式文件bootstrap.css,该文件在压缩前约有144KB
修改server.xml,启用Gzip压缩
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/css" />
重启Tomcat服务器后,能够看到文件大小被压缩到了21.6kB。同时因为文件变小了,所以下载耗费的时间也得到了缩短
4、是否启用了Gzip
有些时候我们可能会想知道服务器到底有没有开启Gzip压缩,这个时候我们可以直接查看响应文件的文件头Content-Encoding 部分。
未启用Gzip压缩时的Response Headers
启用Gzip压缩后的Response Headers
对比两者,很明显能够看到启用Gzip压缩后的响应头多了Content-Encoding:gzip