我想要將我的網頁中的.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