利用 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);
//				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=";

  

配置下过滤器就行了,效果如下:

在开发阶段还是比较有用的。

时间: 2024-11-06 22:08:20

利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试的相关文章

引用静态资源时加上时间戳,处理浏览器缓存问题

参考其他文章列举存储过程的优劣,据此分析目前智慧电站总项目下,还有那些地方的数据库操作,适合使用存储过程进行优化. 存储过程是什么? 储存程序 (Stored Procedure),又可称预储程序或者存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序.--维基百科 可以理解为数据库中的函数过程. 存储过程的优势 就我在项目中实际使用来说,当前台处理涉及多条数据库查询语句操作,并出现临时表需整合多个表筛选多余信息的情况下使用到了存储过程.

[分享黑科技]纯js突破localstorage存储上线,远程抓取图片,并转码base64保存本地,最终实现整个网站所有静态资源离线到用户手机效果却不依赖浏览器的缓存机制,单页应用最新黑科技

好久没有写博客了,想到2年前答应要放出源代码的也没放出来,最近终于有空先把纯js实现无限空间大小的本地存储的功能开源了,项目地址https://github.com/xueduany/localstore,demo见http://xueduany.github.io/localstore/,下面给大家简单说说大概原理,具体细节和异常处理后面有机会在单独说 先说下突破本地localStorage的原理,官方原话是这么说的http://www.w3.org/TR/2013/PR-webstorage

利用多域名存储静态资源进行性能优化:网站的静态资源为什么要使用独立域名

在大型网站中,我们发现页面资源经常使用不同的域名进行引用,例如126邮箱的部分js.css.图片存放于http://mimg.127.net/域名下,京东的部分静态图片存放在http://img11.360buyimg.com域名下,那这样做究竟有什么好处呢,和性能又有什么关系呢,下面进行具体分析. 一.浏览器并发请求数的限制 我们进行网站页面访问时的客户端是浏览器,浏览器的很多机制对网站的访问速度有很大的影响(例如浏览器对静态资源的缓存机制),此外浏览器为提升页面显示效率,支持并发获取资源,但

项目总结plc_过滤器规则(filter)_忽略过滤的js和css文件

为了保证项目安全,加入了过滤器.开始想的很简单就是为了让用户先登录再进行操作.然而碰到了很多问题. 过滤器配置用的  /*   意思所有页面都过滤; 那么 以前做好的css,js文件都会过滤,这显然是不对的.  开始第一步想法是 把css和js的文件夹加入 filter 初始值 <init-param> <description></description> <param-name>nologinfilter</param-name> <p

node——通过express模拟Apache实现静态资源托管

1.express中处理静态资源的函数 创建一个app.js作为入口文件,创建一个public文件夹作为静态资源文件夹 var app=express();var fn=express.static(path.join(__dirname,'public')); //此时'/'是public目录 app.use('/',fn); 或者可以写在一起 app.use('/',express.static(path.join(__dirname,'public'))); 如果这样写 app.use('

互联网企业静态资源的部署,如何充分利用浏览器缓存机制

浏览器获取静态资源方式:缓存.版本 从html文件中解析出静态资源的url,查看本地缓存是否存在.是否过期,是否需要重新获取.根据url全路径匹配查找是否存在,根据header的字段expire/cache-control等判断是否过期. 所谓版本信息,不过是静态资源url的一部分信息,通过修改服务器html里静态资源的版本信息,达到修改静态资源url路径的目的,从而实现客户端浏览器重新下载静态资源的目的. 版本示例:http://xx.x.x.x:8083/static/dll/vendor1

spring boot 静态资源。。

spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通过配置进行修改. 如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc(@SpringBootApplication 注解的程序入口类已经包含@Configuration),增加该注解以后WebMvcAutoConfiguration中配

变态的静态资源缓存与更新

这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣.有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化. 接下来,我想从原理展开讲述,多图,较长,希望能有耐心看完. 让我们返璞归真,从原始的前端开发讲起.上图是一个"可爱"的index.html页面和它的样式文件a.css,用文本编辑器写代码,无需编译,本地预览,确认OK,丢到服

国内站点经常使用的一些 CDN 静态资源公共库加速服务

web开发人员们的福利来了..旨在为大家提供更快很多其它更好的静态资源库的CDN载入库方案! CDN公共库是指将经常使用的JS库存放在CDN节点,以方便广大开发人员直接调用. 与将JS库存放在server单机上相比,CDN公共库更加稳定.快速.一 般的CDN公共库都会包括全球全部最流行的开源JavaScript.JQuery等库.你能够在自己的网页上直接通过script标记引用这些资源.这样做不仅能够为您 节省流量.还能通过CDN加速.获得更快的訪问速度.注意站点要支持ssl的有些资源慎用.最好