JAVA_WEB_控制静态文件缓存(js,css)方案

控制静态文件缓存(js,css)方案

方案一:修改完静态文件手动修改静态文件后的版本号

优势:方案简单 缺点:工做量巨大,不方便维护javascript

<script type="text/javascript" src="test.js?v=20180418"></script>
复制代码

方案二:静态文件后添加随机版本id

优势:方便改造,在每一个静态文件后+?version=Math.random() 缺点:version每次都是新的,会从新请求服务端,会对服务器形成压力css

方案三:静态文件后的版本号从ServletContext中读取。

优势:一次改造,终身受益java

方案描述:

经过监听 ServletContenxt的建立,在建立的时候,初始化 随机数,并将随机数 放到 ServletContext 域对象中。
复制代码

1.实现 ServletContextListener 接口。web

public class ServletContextInitListener implements ServletContextListener {

	@Autowired
	private DictTypeMapper dictTypeMapper;
	
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("----------------------------servletContenxt init -------------------------------------");
		//每次容器启动的时候,随机生成资源版本号
		double version = Math.random();
		ServletContext sc = sce.getServletContext();
		// 将随机数 放到ServletContext中
		sc.setAttribute("resourceVersion", version);
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("----------------------------servletContenxt destory -------------------------------------");
	}

}
复制代码

2.配置web.xml缓存

在web.xml 中添加以下 :服务器

<listener>
  	<listener-class>com.jeeplus.common.utils.ServletContextInitListener</listener-class>
</listener>
复制代码

3.在jsp页面上使用app

<script src="${ctxStatic}/common-front/js-menu/contabs.js?v=${resourceVersion}"></script>
复制代码

为何ServletContext 监听器,获取mapper ,shiro ,不报错。 web.xml listener 顺序dom

相关文章
相关标签/搜索