控制静态文件缓存(js,css)方案
方案一:修改完静态文件手动修改静态文件后的版本号
优点:方案简单 缺点:工作量巨大,不方便维护
复制代码
方案二:静态文件后添加随机版本id
优点:方便改造,在每个静态文件后+?version=Math.random() 缺点:version每次都是新的,会重新请求服务端,会对服务器造成压力
方案三:静态文件后的版本号从ServletContext中读取。
优点:一次改造,终身受益
方案描述:
通过监听 ServletContenxt的创建,在创建的时候,初始化 随机数,并将随机数 放到 ServletContext 域对象中。
复制代码
1.实现 ServletContextListener 接口。
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 中添加如下 :
com.jeeplus.common.utils.ServletContextInitListener
复制代码
3.在jsp页面上使用
复制代码
为什么ServletContext 监听器,获取mapper ,shiro ,不报错。 web.xml listener 顺序