14

我正在使用 Tomcat 来压缩我的 HTML 内容,如下所示:

<Connector port="8080" maxHttpHeaderSize="8192"
maxProcessors="150" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="150" connectionTimeout="20000" disableUploadTimeout="true"
compression="on" compressionMinSize="128" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html"
URIEncoding="UTF-8" />

但是,在 HTTP 标头(通过 YSlow 观察到)中,我没有看到

Content-Encoding: gzip

导致 YSlow 得分不佳。

我所看到的只是

HeadersPost
Response Headers
Server: Apache-Coyote/1.1
Content-Type:   text/html;charset=ISO-8859-1
Content-Language:   en-US
Content-Length: 5251
Date:   Sat, 14 Feb 2009 23:33:51 GMT

我正在运行 apache mod_jk Tomcat 配置。

如何使用 Tomcat 压缩 HTML 内容,并在标题中添加“Content-Encoding: gzip”?

4

5 回答 5

6

看一下http://sourceforge.net/projects/pjl-comp-filter/

其他自定义解决方案可能存在内存泄漏。

此外,如果您使用的是 mod_jk,那么您肯定不会为这些请求使用 8080 连接器(支持压缩)。

于 2009-03-04T17:16:03.117 回答
4

Tomcat 将进行压缩。但是,因为您使用的是mod_jk我猜您是通过 Apache 在端口 80 而不是 tomcat 在端口上获取请求8080。作为一个实验,尝试通过端口 8080 获取您的页面,然后检查yslow您是否应该看到正确的标题。

我认为正在发生的事情是 apache 正在解压缩从 tomcat 获取的内容,mod_jk然后将压缩的内容传递给浏览器。

如果您想使用mod_jk,则需要在 Apache 而不是 Tomcat 上设置压缩。

于 2009-08-11T13:43:48.977 回答
2

也许Tomcat所指的压缩不是gzip?这是在黑暗中的刺,但它可能与空白压缩或线条修剪有关。

我想Tomcat在这方面会更加明确(希望如此)。

我们在我们的应用程序中运行了 duffmo 提到的 gzip 过滤器,web.xml 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd">

    <display-name>App-Web</display-name>

    <!-- FILTERS -->

    <!-- Gzip filter -->
    <filter>
        <filter-name>GZIPFilter</filter-name>
        <filter-class>weblogicx.servlet.gzip.filter.GZIPFilter</filter-class>
    </filter>

    [snip]    
</web-app>
于 2009-02-15T19:22:31.660 回答
1

我在这里查看了 Tomcat 文档:http: //tomcat.apache.org/tomcat-5.5-doc/config/http.html

它提到 using compression="force" which 对我有用。它还说你可以设置一个minimum number. 这对我来说很好

<Connector port="8080" compression="256000" />

(压缩超过 256Kb 的任何内容)

的默认值compressableMimeType意味着我不需要该属性。另请注意,它没有列出CompressionMinSize属性。

于 2010-03-02T19:21:16.690 回答
1

要提高 J2EE Web 应用程序的整体客户端性能,您可以尝试 WebUtilities java 库。

这是链接 :: http://code.google.com/p/webutilities/

它提供过滤器、标记、servlet 组件以应用各种客户端性能实践,从而针对 PageSpeed/YSlow 获得更高的性能评级。

从 0.0.4 版开始,它有助于遵循性能实践。

  1. 最小化 HTTP 请求 - 可以在一个请求中提供多个 JS/CSS 文件
  2. 客户端缓存 - 添加适当的 Cache-Control、Expires 标头
  3. 动态 JS/CSS 缩小 - 使用 YUICompressor
  4. 压缩 - 支持 gzip/deflate/compress 编码的 2way 压缩
  5. 服务器上的响应缓存 - 避免重新处理未更改的资源
  6. 添加字符编码 - 让浏览器提前知道

它还可以针对 MIME、URL 或用户代理进行高度可配置/定制。

于 2011-03-31T12:59:02.207 回答