IE 11 在响应中忽略缓存控制标头

Yog*_*dra 5 tomcat caching cache-control expires-header

我正在 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>
Run Code Online (Sandbox Code Playgroud)

以下是响应的标题

缓存控制:max-age=7199

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

内容类型:图像/png

传输编码:分块

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

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

Chr*_*ltz 5

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

简短回答:您必须同时使用Pragma: no-cache,Cache-Control: no-cacheExpires所有这些。

更新 2019-01-24

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

  • 问题是关于使 IE 缓存响应。您链接到一个页面“如何防止 Internet Explorer 中的缓存”,这是相反的。 (2认同)