首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat压缩不会在报头中添加Content-Encoding: gzip

Tomcat压缩不会在报头中添加Content-Encoding: gzip
EN

Stack Overflow用户
提问于 2009-02-15 00:06:14
回答 5查看 17.9K关注 0票数 14

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

代码语言:javascript
复制
<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观察到的)中,我没有看到

代码语言:javascript
复制
Content-Encoding: gzip

从而导致较差的YSlow分数。

我所看到的只是

代码语言:javascript
复制
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“?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-04 17:16:03

看看http://sourceforge.net/projects/pjl-comp-filter/吧。

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

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

票数 6
EN

Stack Overflow用户

发布于 2009-08-11 13:43:49

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2009-02-15 19:22:32

也许Tomcat所指的压缩不是gzip吗?这是暗箭伤人,但它可能与空格压缩或线条修剪有关。

我想Tomcat在这方面会更明确一点(这里是希望的)。

我们在应用程序中运行了duffmo提到的gzip过滤器,web.xml如下所示:

代码语言:javascript
复制
<?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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/550024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档