我正在配置 tomcat 以压缩基于文本的文件。我目前的配置有:
compression="on"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/xml,application/x-javascript,application/json"
但是,我注意到超过 60kb 的 javascript 文件没有被压缩。我错过了任何隐藏的设置吗?
搜索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>