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

相關文章
相關標籤/搜索