最近在工作中对一个开源框架进行二次开发,发现在浏览器运行哪些静态资源浏览器是不缓存的,找了好久都没有找到设置的地方,只好自食其力,用Java的过滤器设置过期时间,详情且看代码。
public class ResponseFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
Date date = new Date();
//设置缓存周期为一个小时
Long cacheCycle = (long) (60 * 60 * 1000);
Long time = date.getTime() + cacheCycle;
//Last-Modified:页面的最后生成时间
res.setDateHeader("Last-Modified", date.getTime());
//Expires:过时期限值
res.setDateHeader("Expires", time);
//Cache-Control来控制页面的缓存与否,public:浏览器和缓存server都能够缓存页面信息
res.setHeader("Cache-Control", "public");
//Pragma:设置页面是否缓存,为Pragma则缓存,no-cache则不缓存
res.setHeader("Pragma", "Pragma");
chain.doFilter(request, res);
}
@Override
public void destroy() {
}
}
web.xml配置,可自行配置
<filter>
<filter-name>ResponseFilter</filter-name>
<filter-class>art.zzc.filter.ResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>