本文完成于2015年底。
基于tomcat 8.0.x版本的文档,可以了解到tomcat支持基于gzip
实现的压缩返回数据的特性。
配置方法
最简单的配置样例如下:
关于启用gzip压缩传输特性,tomcat 8.0.x版本提供了如下几个参数:
-
compression
,默认值为off
。可能的取值有:-
on
,启用压缩传输特性; -
off
,关闭压缩的特性; -
force
,表示无条件启用压缩特性; - 正整数,启用压缩传输特性,同时指定了压缩操作门限值,当传输数据量超服务器托管网出门限时,tomcat即对传输数据执行压缩。
当tomcat无法预先得知待传输数据的具体长度,而
compression
被设置为on
,则tomcat自动压缩传输数据。 -
-
compressionMinSize
,默认值是2048,即2KB,当传输的数据量大于2KB时,tomcat自动将待传输的数据执行压缩。 -
compressableMimeType
,默认值为text/html,text/xml,text/plain,text/css,text/javascript,application/javascript
,基本上涵盖了当前能遇到的文件类型。 -
noCompressionUserAgents
,默认值为空字符串,即不限制。tomcat将本配置的值当成正则表达式来使用,用来判定是否向特定的浏览器传输压缩数据,比如配置为"gozilla"
,则遇到UserAgent
类型为gozilla
的浏览器,则不对返回的数据执行压缩。
确认gzip已启用的方法
使用抓包工具或者浏览器的调试工具监控页面请求过程中的网络交互情况,重点检查tomcat返回浏览器的页面响应头部,可以发现gzip压缩传输启用前、后的差异。
-
启用前
Content-Length:1014 Content-Type:text/html;charset=UTF-8 Date:Sat, 14 Nov 2015 14:34:36 GMT Server:Apache-Coyote/1.1
-
启用后
Content-Encoding:gzip Content-Type:text/html;charset=UTF-8 Date:Sat, 14 Nov 2015 14:37:34 GMT Server:Apache-Coyote/1.1 Transfer-Encoding:chunked Vary:Accept-Encoding
因此使用抓包工具或者使用浏览器的调试工具观察HTTP交互数据时,如果发现响应头部的报文中带有如下三部分头部信息,基本上可以确认Web系统的tomcat已启用了gzip压缩传输的特性。
Content-Encoding:gzip
Transfer-Encoding:chunked
Vary:Accept-Encoding
注意事项
-
依据官方文档,当用户选择的
Connector
支持sendfile
特性时,如传输数据大于48KB,则优先使用sendfile
特性来传输数据,并不会对待传输的数据执行压缩操作。如果需要对大于48KB的数据执行压缩操作,依据官方文档,有两种选择:
- 配置
useSendfile
为false
,则不会启用sendfile
特性。 - 调整启用
sendfile
的门限值,修改${CATALINA_BASE}/conf/web.xml
中DefaultServlet
的配置项sendfileSize
的取值,比如修改为96,则表明当待传输的数据大于96KB时,使用服务器托管网sendfile
特性,低于96KB的数据则执行压缩。
- 配置
-
压缩传输可以有效降低浏览器与tomcat之间传输的数据量,但天下没有免费的午餐,启用压缩特性后,虽说减少了传输数据量,但却提升了浏览器和Web服务器的CPU占用率,因此不能为了追求压缩率,而将
compressionMinSize
配置为过小的值。
参考资料
- Apache Tomcat 8 Configuration Reference: Overview
- Apache Tomcat 8 Configuration Reference: The HTTP Connector
- sendfile
- linux的sendfile()系统调用
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
题目描述 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。 输出格式: 在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。 输入样例: 9 服务器托管网88 74 …