在Tomcat 7上部署我们的应用程序(Java,Spring)时,没问题。现在我们升级到 Tomcat 8 ,在提供静态内容时速度非常慢。查看开发人员工具(请参阅下面的快照),静态内容(小型 .js 和 .css 文件)的每个请求都需要我们为配置的内容。 server.xml中的connectionTimeout 。由于默认值为20000,因此可能需要20秒。对于每个文件。将此值降至1000时,速度会更快,需要1秒。每一个人。
这种情况发生在使用默认配置的不同开发机器上。其他进程(Web服务请求等)正常运行。
我想知道从哪里开始寻找。
答案 0 :(得分:4)
由于servlet spec 3.1
更改(setContentLengthLong函数),这确实是由Ziplet压缩过滤器中的issue引起的。
我已经创建了pull request来修复它。
此拉取请求合并为main并于2016年4月18日发布(ziplet-2.1.0)
答案 1 :(得分:3)
下面描述的插件(pjl-comp-filter)被用作CompressionFilter,根据Github for ziplet(其后续版本)中的一个开放问题,结果证明它与Tomcat 8不兼容: https://github.com/ziplet/ziplet/issues/6
我用其中一个解决方案替换它并且它起作用了:
Which compression (is GZIP the most popular) servlet filter would you suggest?
以前的配置,不使用Tomcat 8:
pom.xml中的依赖:
<dependency>
<groupId>org.sourceforge</groupId>
<artifactId>pjl-comp-filter</artifactId>
</dependency>
和web.xml:
<filter>
<filter-name>CompressingFilter</filter-name>
<filter-class>com.planetj.servlet.filter.compression.CompressingFilter</filter-class>
<init-param>
<param-name>includeContentTypes</param-name>
<param-value>text/html,multipart/form-data,text/css,application/x-javascript</param-value>
</init-param>
<init-param>
<param-name>compressionThreshold</param-name>
<param-value>256</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CompressingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
答案 2 :(得分:0)
在我的情况下,我只是从web.xml中删除压缩过滤器,一切恢复正常。
下面的xml不能用于tomcat 8,至少在我的应用程序中没有。
<filter>
<filter-name>compressionFilter</filter-name>
<filter-class>com.googlecode.webutilities.filters.CompressionFilter</filter-class>
<init-param>
<param-name>compressionThreshold</param-name>
<param-value>1024</param-value>
</init-param>
<init-param>
<param-name>ignoreURLPattern</param-name>
<param-value>.*\.(flv|mp3|mpg)</param-value>
</init-param>
<init-param>
<param-name>ignoreMimes</param-name>
<param-value>images/*,video/*, multipart/x-gzip</param-value>
</init-param>
<init-param>
<param-name>ignoreUserAgentsPattern</param-name>
<param-value>.*MSIE.*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>compressionFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>