我无法让 Tomcat 发送具有正确过期定义的图像。浏览器不断发送对已下载图像的 get 请求,Tomcat 响应 304。我想要的是 Tomcat 将使用正确的 expires 标头响应初始请求,并且没有任何 Last-modified 标头,因此浏览器将使用本地缓存,直到文件过期时无需在每次页面加载时都去服务器查看图像是否已更改。
我的 web.xml 文件中有以下定义:
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 1 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>modification plus 0 minutes</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType application/javascript</param-name>
<param-value>modification plus 0 minutes</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
任何想法?
您可以按照中所述启用 ExpiresFilter 日志吗容器提供的过滤器 > 过期过滤器 > 故障排除 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Troubleshooting :
Add to $CATALINA_BASE/conf/logging.properties
以下声明:
org.apache.catalina.filters.ExpiresFilter.level = FINE
您将看到如下日志消息:
添加过期标头:
Mar 26, 2010 2:09:47 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
FINE: Request "/tomcat.gif" with response status "200"
content-type "image/gif", set expiration date 3/26/10 2:19 PM
不添加过期标头:
Mar 26, 2010 2:10:27 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
FINE: Request "/docs/config/manager.html" with response status "200"
content-type "text/html", no expiration configured
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)