网站优化之开启tomcat的gzip支持

1,825 views

基于tomcat 8.0.x版本的文档,可以了解到tomcat支持gzip压缩传输数据。

配置方法

最简单的配置样例如下:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           compression="on" 
           />

关于启用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的数据执行压缩操作,依据官方文档,有两种选择:

    1. 配置useSendfilefalse,则不会启用sendfile特性。
    2. 调整启用sendfile的门限值,修改${CATALINA_BASE}/conf/web.xmlDefaultServlet的配置项sendfileSize的取值,比如修改为96,则表明当待传输的数据大于96KB时,使用sendfile特性,低于96KB的数据则执行压缩。
  • 压缩传输可以有效降低浏览器与tomcat之间传输的数据量,但天下没有免费的午餐,启用压缩特性后,虽说减少了传输数据量,但却提升了浏览器和Web服务器的CPU占用率,因此不能为了追求压缩率,而将为compressionMinSize配置过小的值。

参考资料

  • http://tomcat.apache.org/tomcat-8.0-doc/config/index.html
  • http://tomcat.apache.org/tomcat-8.0-doc/config/http.html
  • http://machael.blog.51cto.com/829462/479931
  • http://blog.chinaunix.net/uid-20778583-id-37112.html

 



若非注明,均为原创,欢迎转载,转载请注明来源:网站优化之开启tomcat的gzip支持

关于 JackieAtHome

基层程序员,八年之后重新启航

此条目发表在 tomcat, Web, 笔记 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

网站优化之开启tomcat的gzip支持》有 1 条评论

  1. Pingback 引用通告: 网站优化之压缩页面输出 | Jackie的家

评论功能已关闭。