开发过程中设置服务器端来禁用浏览器缓存

最近在开发地图相关的功能,遇到一个比较麻烦的事情,就是缓存问题,解决方法也很简单,随手记下:

之前开发,直接浏览器中开F12然后里面Disable Cache就可以了,但是现在有地图相关的,地图数据不缓存的话很影响开发效率,但是浏览器又不是根据条件来缓存(我也没找啥插件),所以得从服务器端来考虑一下了。

之前看HTTP协议的时候,知道有Cache-Control这么个选项,所以得操作一下服务器端,在response中设置Cache-Control就可以了~

动手写一个filter:

 1 import java.io.IOException;
 2 
 3 import javax.servlet.Filter;
 4 import javax.servlet.FilterChain;
 5 import javax.servlet.FilterConfig;
 6 import javax.servlet.ServletException;
 7 import javax.servlet.ServletRequest;
 8 import javax.servlet.ServletResponse;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 /**
12  * 开发阶段,肯定不想用缓存呀,这个filter告诉浏览器不要用缓存
13  * @author kischn
14  *
15  */
16 public class CacheFilter implements Filter{
17 
18     @Override
19     public void destroy() { }
20 
21     @Override
22     public void doFilter(ServletRequest req, ServletResponse res,
23             FilterChain chain) throws IOException, ServletException {
24         HttpServletResponse  resp = (HttpServletResponse) res;
25         resp.setHeader("Pragma", "No-cache");
26         resp.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
27         resp.addDateHeader("expires", -1);
28         chain.doFilter(req, res);
29     }
30     
31     @Override
32     public void init(FilterConfig arg0) throws ServletException { }
33 
34 }
Filter

 

 然后把filter配置到web.xml里面就可以了。

 1 <!-- 开发模式下,禁用js,css及do的缓存[生产模式下需要禁用!!!]  -->
 2     <filter>
 3         <filter-name>disableCacheFilter</filter-name>
 4         <filter-class>com.haiyisoft.common.filter.CacheFilter</filter-class>
 5     </filter>
 6     <filter-mapping>
 7         <filter-name>disableCacheFilter</filter-name>
 8         <url-pattern>*.do</url-pattern>
 9     </filter-mapping>
10     <filter-mapping>
11         <filter-name>disableCacheFilter</filter-name>
12         <url-pattern>*.js</url-pattern>
13     </filter-mapping>
14     <filter-mapping>
15         <filter-name>disableCacheFilter</filter-name>
16         <url-pattern>*.jsp</url-pattern>
17     </filter-mapping>
18     <filter-mapping>
19         <filter-name>disableCacheFilter</filter-name>
20         <url-pattern>*.css</url-pattern>
21     </filter-mapping>
web.xml

这样,重启服务器,也不需要设置浏览器端的禁用缓存选项了,地图的数据就可以缓存,js等页面就直接不缓存了~

你可能感兴趣的:(开发过程中设置服务器端来禁用浏览器缓存)