利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试
Posted digdeep
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试相关的知识,希望对你有一定的参考价值。
直接上代码:
public class WeiXinFilter implements Filter{ private static Logger logger = LoggerFactory.getLogger(WeiXinFilter.class); public void init(FilterConfig fConfig) throws ServletException {} public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse resp = (HttpServletResponse)response; String requestURL = req.getRequestURL().toString(); String queryStr = req.getQueryString(); // add timestamp to static resource, to avoid cache if(requestURL != null && (requestURL.endsWith(".js") || requestURL.endsWith(".css"))){ // static resource String newURL = null; if(StringUtils.isNotBlank(queryStr) && queryStr.trim().indexOf(ParameterConfig.STATIC_TAIL) == -1){ newURL = requestURL + "?" + queryStr + "&" + ParameterConfig.STATIC_TAIL + new Date().getTime(); resp.sendRedirect(newURL); return; } if(StringUtils.isBlank(queryStr)){ newURL = requestURL + "?" + ParameterConfig.STATIC_TAIL + new Date().getTime(); resp.sendRedirect(newURL); return; } try{ chain.doFilter(request, response); }catch(Exception e){ logger.error(e.toString()); } return; }
public class ParameterConfig { /** 静态资源 为防止缓存,加上时间戳标志 */ public static final String STATIC_TAIL = "__oawx_t=";
配置下过滤器就行了,chrome 调试的 效果如下,可以看到 chrome浏览器在获取css和js文件时,路径上携带了时间戳:
在开发阶段还是比较有用的。
以上是关于利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试的主要内容,如果未能解决你的问题,请参考以下文章