Tomcat 压缩不添加内容编码:标头中的 gzip

2022-09-04 03:17:00

我正在使用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内容,并在标题中添加“内容编码:gzip”?


答案 1

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

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

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


答案 2

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

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

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


推荐