ZZ *_*der 23
在Tomcat等容器中提供静态内容的默认servlet不会设置任何缓存控制头.您不需要为此编写servlet.只需创建一个这样的过滤器,
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
long expiry = new Date().getTime() + cacheAge*1000;
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setDateHeader("Expires", expiry);
httpResponse.setHeader("Cache-Control", "max-age="+ cacheAge);
chain.doFilter(request, response);
}
Run Code Online (Sandbox Code Playgroud)
无论何时需要添加缓存控制,只需将过滤器添加到web.xml中的资源即可.例如,
<filter>
<filter-name>CacheControl</filter-name>
<filter-class>filters.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheControl</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
aku*_*001 -10
好吧..看起来默认标头字段应该启用缓存。我在另一个论坛找到了解决方案。显然,您需要在响应中显式设置内容长度。但想知道为什么。我认为 HttpServletResponse 可以为我们做到这一点。不管怎样,它就像一个魅力,图像被很好地缓存。
| 归档时间: |
|
| 查看次数: |
17347 次 |
| 最近记录: |