7

我正在配置 tomcat 以压缩基于文本的文件。我目前的配置有:

compression="on"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/xml,application/x-javascript,application/json"

但是,我注意到超过 60kb 的 javascript 文件没有被压缩。我错过了任何隐藏的设置吗?

4

1 回答 1

13

搜索tomcat7 的文档我找不到对compressionMaxSize. 像这样的唯一命令compressionMinSize旨在过滤掉任何小于定义值的文件的压缩。像这样:

compressionMinSize="2048"

这是我的 server.xml 在压缩方面的样子:

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"

实际上,有一些与此相关的隐藏文档可以解释您的经历:

注意:在使用压缩(节省带宽)和使用 sendfile 功能(节省 CPU 周期)之间需要权衡。如果连接器支持 sendfile 功能,例如 NIO 连接器,则使用 sendfile 将优先于压缩。症状是大于 48 Kb 的静态文件将在未压缩的情况下发送。您可以通过设置连接器的 useSendfile 属性来关闭 sendfile,如下所述,或者在默认 conf/web.xml 或 Web 应用程序的 web.xml 中的 DefaultServlet 配置中更改 sendfile 使用阈值。

因此,如果您想以 CPU 利用率为代价来节省带宽,您可以通过将此设置添加到 web.xml 来禁用此触发器(参见此处):

<init-param>
    <param-name>sendfileSize</param-name>
    <param-value>96</param-value> <!-- value in KB where compression is turned off in the name of CPU utilization -->
</init-param>
于 2013-03-11T21:02:26.087 回答