要想让全部浏览器不缓存页面,须要在每一个jsp上加上:浏览器
<% response.setHeader("expires","-1"); response.setHeader("pragma","no-cache"); response.setHeader("cache-control","no-cache"); %>
测试,新建一个cache.jsp: 加上了上边的三句话后,用IE查看缓存,没有cache.jsp的缓存。可是每一个页面都加这这代码,有点麻烦,分析:能够经过一个过虑器,对全部*.jsp过虑,设置三个头,所有不缓存。这样就不须要再每一个jsp页面都写上边的三个头了。缓存
第一步:实现过虑器接口服务器
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //转换 HttpServletResponse resp = (HttpServletResponse) response; resp.setHeader("expires","-1"); resp.setHeader("pragma","no-cache"); resp.setHeader("cache-control","no-cache"); //都放行 chain.doFilter(request, response); }
第二步:配置过虑器,url-pattern=*.jspapp
<!-- 控制缓存的Filter --> <filter> <filter-name>cache</filter-name> <filter-class>com.lhy.filter.CacheFilter</filter-class> </filter> <filter-mapping> <filter-name>cache</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
第三步:设置对某些页面缓存N天eclipse
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //转换 HttpServletResponse resp = (HttpServletResponse)response; //设置页面缓存时间 //日历 Calendar c = Calendar.getInstance(); //加2天 c.add(Calendar.DATE,2); long time = c.getTimeInMillis(); resp.setDateHeader("expires", time); // resp.setHeader("pragma","no-cache"); // resp.setHeader("cache-control","no-cache"); //都放行 chain.doFilter(request, resp); }
注意:我用的myeclipse生成的jsp,head里有这几句话,若是是想要设置缓存几天,必定要去掉,不然设置无效。jsp
<meta http-equiv="pragma" content="no-cache">:禁止浏览器从本地机的缓存中调阅页面内容
<meta http-equiv="cache-control" content="no-cache">:指定请求和响应遵循的缓存机制
<meta http-equiv="expires" content="0"> :指定网页在缓存中的过时时间,一旦网页过时,必须到服务器上从新调阅。ide