Tomcat 的过期过滤器在索引页上不起作用



我将以下代码添加到Tomcat(版本9(服务器的web.xml中:

<filter>
<filter-name>CachingFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresDefault</param-name>
<param-value>access plus 14 days</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CachingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

它对任何图像、脚本、子页面等都非常适用。该响应包含一个";"过期";所有资源的标头。

但是对于根资源没有这样的头,我不明白为什么。日志或其他内容中没有错误或警告。是否对根资源进行了特殊处理,从而禁用了缓存?

编辑

我激活了ExpiresFilter的日志以查看更多详细信息,但日志表明根资源的过期标头设置正确。

org.apache.catalina.filters.ExpiresFilter.onBeforeWriteResponseBody Request [/] with response status [200] content-type [text/html;charset=UTF-8], set expiration date [10/3/22 4:33 PM]

但是响应根本不包含Expires Header或任何其他缓存标头。

您可以按照java文档提供的步骤来查看具体情况。

故障排除

最新更新