5

我在 Tomcat 的 web.xml 中设置过期过滤器。标头正确响应,但 IE 仍然没有缓存。它总是向 Tomcat 发出新的请求。

<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image/png</param-name>
<param-value>access plus 2 hours</param-value>
</init-param>

</filter>
<filter-mapping>
        <filter-name>ExpiresFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
</filter-mapping>

以下是来自响应的标题

缓存控制:max-age=7199

过期时间:2016 年 11 月 14 日星期一 16:08:22 GMT

内容类型:图片/png

传输编码:分块

日期:2016 年 11 月 14 日星期一 14:08:22 GMT

有谁知道,我在这里错过了什么?

4

1 回答 1

5

微软自己的关于 cache-control 的文档

简短的回答:你必须使用Pragma: no-cache,Cache-Control: no-cache并且Expires一起使用。

2019-01-24 更新

上述说明用于禁用缓存,而能够强制缓存的答案可以在这个很好的 SO 答案中找到: Make IE to cache resources but always revalidate

于 2016-11-15T15:11:02.917 回答