我想要将我的网页中的.png文件缓存起来。我加在web.xmlresponse.setDateHeader() - 缓存不起作用
<filter>
<filter-name>ContentFilter</filter-name>
<filter-class>filters.ContentFilter</filter-class>
<init-param>
<description>Add an Expires Header</description>
<param-name>expiryDate</param-name>
<param-value>Fri, 30 Apr 2021 20:00:00 GMT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ContentFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
以下方式在初始化设置expiryDate字段值()以下条目
String expiryDateStr = filterConfig.getInitParameter("expiryDate");
SimpleDateFormat format = new SimpleDateFormat(
"EEE, d MMM yyyy HH:mm:ss Z");
try {
Date d = format.parse(expiryDateStr);
expiryDate = d.getTime();
} catch (ParseException e) {
logger.error(e.getMessage(), e);
}
的的doFilter()是:
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filChain) throws IOException, ServletException {
logger.debug("doFilter()");
logger.info(((HttpServletRequest)req).getRequestURL().toString());
filChain.doFilter(req, res);
if (res instanceof HttpServletResponse) {
HttpServletResponse response = (HttpServletResponse) res;
logger.info(((HttpServletRequest)req).getRequestURL().toString());
response.setDateHeader("Expires", expiryDate);
}
}
我的问题每当我刷新浏览器中的网页时,客户端总是请求.png文件。猜猜我的过滤器不工作。这个配置是否正确?
我移动了上面的doFilter()的response.setDateHeader并安装了Live HTTP头插件。我可以看到png文件的返回期限设置为web.xml中配置的值。但是,当我刷新,仍然客户端正在请求这些文件? 是否有任何标准方法来强制执行此缓存而不是expires选项? – ihavprobs
@shk:您需要为此使用适当的Web框架,而不是试图用原始的Servlet API自己解决它。 – skaffman
谢谢。我会检查。 – ihavprobs