2021SC@SDUSC
页面的缓存状态是由http header决定的,主要包括Pragma: no-cache、Cache-Control、 Expires、 Last-Modified、If-Modified-Since。
首先对项目进行配置,在web.xml中作为filter的初始化变量设置进去:
进行了两种设置,因为大部分资源可以不缓存,所以将全部资源设置为不缓存,对于一些特殊的资源,进行缓存处理。如图片等等。
</filter >
<filter >
<filter -name >NoCache < /filter -name >
<filter - class >com.superkaiwii.core.web.filter.ResponseHeaderFilter < /filter - class >
<init -param >
<param -name >Cache -Control < /param -name >
<param -value >no -cache , must -revalidate < /param -value >
< /init -param >
< /filter >
<filter -mapping >
<filter -name >NoCache < /filter -name >
<url -pattern >*. do < /url -pattern >
< /filter -mapping >
<filter >
<filter -name >CacheForWeek < /filter -name >
<filter - class >com.superkaiwii.core.web.filter.ResponseHeaderFilter < /filter - class >
<init -param >
<param -name >Cache -Control < /param -name >
<param -value >max -age = 604800, public < /param -value >
< /init -param >
< /filter >
<filter -mapping >
<filter -name >CacheForWeek < /filter -name >
<url -pattern > /images
利用filter对每个请求的header作处理。ResponseHeaderFilter的示例代码如下所示:
每一个通过这个filter的请求,filter都将<init-param>的参数值赋值到响应的header中
public class ResponseHeaderFilter
implements Filter
{
private FilterConfig fc ;
public void doFilter (ServletRequest paramServletRequest , ServletResponse paramServletResponse , FilterChain paramFilterChain )
throws IOException , ServletException
{
HttpServletResponse localHttpServletResponse = (HttpServletResponse )paramServletResponse ;
Enumeration localEnumeration = this.fc.getInitParameterNames ();
while (localEnumeration.hasMoreElements ())
{
String str = (String )localEnumeration.nextElement ();
localHttpServletResponse.addHeader (str , this.fc.getInitParameter (str ));
}
paramFilterChain.doFilter (paramServletRequest , localHttpServletResponse );
}
public void init (FilterConfig paramFilterConfig )
{
this.fc = paramFilterConfig ;
}
public void destroy ()
{
this.fc = null ;
}
}