文档

Tomcat设置gzip压缩的方法

更新时间:

概述

本文主要讲述如何在Tomcat中设置gzip压缩的方法。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

配置方法

Tomcat5.0以后的版本是支持对输出内容进行压缩的,使用的是gzip压缩格式 。请您修改%TOMCAT_HOME%/conf/server.xml文件,在文件中的以下段落添加注释部分的条目。

<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"
          compression="on" #打开压缩功能
          compressionMinSize="50" #启用压缩的输出内容大小,默认为2KB
noCompressionUserAgents="gozilla, traviata" #对于以下的浏览器,不启用压缩
          compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /> #哪些资源类型需要压缩

功能测试

Tomcat是根据浏览器请求头中的accept-encoding来判断浏览器是否支持压缩功能,如果这个值包含有gzip项,就表明浏览器支持gzip压缩内容的浏览。您可以用两种方法来验证压缩是否生效:

  • 通过浏览器直接请求
    通过浏览器访问启用压缩配置的服务器,然后通过抓包工具查看抓到的数据包。当您在数据报信息中查看到“gzip”字样的参数,即验证当前内容已压缩。
  • 通过程序模拟请求
    • 用HttpClient写一个简单的测试程序,以下是测试程序的内容。
      public void testGzip() { 
      HttpClient httpClient = new HttpClient();
      GetMethod getMethod = new GetMethod("http://localhost/admin.jsp");
      try {
      getMethod.addRequestHeader("accept-encoding", "gzip,deflate");
      getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)");
      int result = httpClient.executeMethod(getMethod);
      if (result == 200) {
      System.out.println(getMethod.getResponseContentLength());
      String html = getMethod.getResponseBodyAsString();
      System.out.println(html);
      System.out.println(html.getBytes().length);
      }
      } catch (HttpException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      } finally {
      getMethod.releaseConnection();
      }
      }
    • 执行这个程序,查看输出的内容。如果输出的是一些乱码,并且打印内容的长度远小于实际的长度,就说明配置已生效。
      说明:当发现内容没有被压缩,您可以考虑调整compressionMinSize参数的大小,如果请求资源小于这个数值,则不会启用压缩功能。

适用于

  • 云服务器ECS
  • 本页导读 (1)
文档反馈