Tomcat 8 不响应服务静态内容

kra*_*use 5 java tomcat

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

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

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

开发者工具快照

R. *_*olt 5

这确实是由Ziplet 压缩过滤器中由于更改(setContentLengthLong 函数)而导致的问题引起的servlet spec 3.1

我创建了一个拉取请求来修复它。

此拉取请求合并到 main 并于 2016 年 4 月 18 日发布 (ziplet-2.1.0)


kra*_*use 3

下面描述的插件 (pjl-comp-filter) 被用作 CompressionFilter,根据 ziplet(其后继者)的 Github 中的一个未解决问题,该插件与 Tomcat 8 不兼容: https ://github.com/ziplet /ziplet/问题/6

我用以下解决方案之一替换了它并且它有效:

您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

所以以前的配置,不适用于 Tomcat 8 是:

pom.xml 中的依赖项:

    <dependency>
        <groupId>org.sourceforge</groupId>
        <artifactId>pjl-comp-filter</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

和 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>
Run Code Online (Sandbox Code Playgroud)