利用 filter 机制给静态资源 url 加上时间戳,来防止js和css文件的缓存问题
作者:digdeep 时间:2022-03-16 07:51:24
直接上代码:
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);
// req.getRequestDispatcher(newURL).forward(request, response);
return;
}
if(StringUtils.isBlank(queryStr)){
newURL = requestURL + "?" + ParameterConfig.STATIC_TAIL + new Date().getTime();
resp.sendRedirect(newURL);
// req.getRequestDispatcher(newURL).forward(request, response);
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=";
配置下过滤器就行了,效果如下:
在开发阶段还是比较有用的。
以上所述是小编给大家介绍的利用 filter 机制给静态资源 url 加上时间戳,来防止js和css文件的缓存问题的相关内容,希望能够帮助到大家。
标签:filter,静态,资源
0
投稿
猜你喜欢
全面理解Java类和对象
2021-11-17 11:11:50
C#如何动态创建lambda表达式
2022-04-18 21:57:16
javaweb中Http协议详解
2022-03-21 05:12:41
Kryo框架使用方法代码示例
2021-05-30 15:46:05
Spring实现动态切换多数据源的解决方案
2023-05-21 13:07:15
Spring Cloud Zuul路由网关服务过滤实现代码
2021-08-26 10:56:07
Android PopUpWindow使用详解
2023-06-30 06:33:11
SpringBoot3.0自定stater模块的操作流程(chatGPT提供的49种场景)
2023-06-15 05:21:46
Java注解之Elasticsearch的案例详解
2022-03-30 12:28:58
SpringMVC的执行流程及组件详解
2021-06-17 23:29:21
c# 进程之间的线程同步
2023-07-05 06:34:23
Mybatis查询时,区分大小写操作
2021-08-11 14:10:54
java获取中文拼音首字母工具类定义与用法实例
2023-07-14 08:23:55
springboot如何静态加载@configurationProperties
2021-12-13 16:20:13
Java中String类常用类型实例总结
2023-07-06 19:15:43
JavaAPI的使用方法详解
2022-10-30 23:00:40
Entity Framework主从表的增删改
2023-10-05 18:56:27
解决idea每次新建项目都需要重新指定maven目录
2022-12-25 17:39:52
C#基于委托实现多线程之间操作的方法
2022-07-16 23:58:16
游戏开发之随机概率的选择算法
2022-08-26 13:21:09