Tomcat 8无法响应静态内容

时间:2015-10-19 17:33:06

标签: java tomcat

在Tomcat 7上部署我们的应用程序(Java,Spring)时,没问题。现在我们升级到 Tomcat 8 ,在提供静态内容时速度非常慢。查看开发人员工具(请参阅下面的快照),静态内容(小型 .js .css 文件)的每个请求都需要我们为配置的内容。 server.xml中的connectionTimeout 。由于默认值为20000,因此可能需要20秒。对于每个文件。将此值降至1000时,速度会更快,需要1秒。每一个人。

这种情况发生在使用默认配置的不同开发机器上。其他进程(Web服务请求等)正常运行。

我想知道从哪里开始寻找。

Developer tools snapshot

3 个答案:

答案 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>