利用 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 机制给静态资源 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
  • asp之家 软件编程 m.aspxhome.com