解决问题:

防止浏览器缓存,修改js  css后无效,需要强刷。

两种解决方案:

1. 不依赖插件,纯代码实现

1.1 实现拦截处理器:ModelAndViewInterceptor implements HandlerInterceptor

1.2 modelAndView.addObject("resourceVersion", this.getVersion());

1.3

private String getVersion() {String version = this.cacheService.getString(SystemManager.getAppName(), "ResourceVersion");if(StringUtils.isEmpty(version)) {version = String.valueOf(System.currentTimeMillis() / 1000L);this.cacheService.set(SystemManager.getAppName(), "ResourceVersion", version, 2592000);}return version;}

项目启动的时候,生成一个key值为  ResourceVersion 的放入缓存中,此处我放在redis . 这里取出来即可。

1.4 页面处理 : 引入文件处:  域名/static/order.js?${resourceVersion}

2. 依赖插件

项目主页:https://code.google.com/archive/p/maven-replacer-plugin/

项目pom.xml :

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.1.0</version><configuration><useCache>true</useCache></configuration><executions><execution><id>prepare-war</id><phase>prepare-package</phase><goals><goal>exploded</goal></goals></execution></executions></plugin><!--此插件用于获取当前时区当前时间--><plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>3.0.0</version><executions><execution><id>timestamp-property</id><goals><goal>timestamp-property</goal></goals><configuration><name>build.time</name><pattern>MdHHmmssSSS</pattern><timeZone>GMT+8</timeZone></configuration></execution></executions></plugin><plugin><groupId>com.google.code.maven-replacer-plugin</groupId><artifactId>replacer</artifactId><version>1.5.3</version><executions><execution><phase>prepare-package</phase><goals><goal>replace</goal></goals></execution></executions><configuration><basedir>${build.directory}</basedir><includes><include>${build.finalName}/WEB-INF/views/*.vm</include><include>${build.finalName}/WEB-INF/views/**/*.vm</include></includes><replacements><replacement><token>\.css\"</token><value>.css?v=${build.time}\"</value></replacement><replacement><token>\.css\'</token><value>.css?v=${build.time}\'</value></replacement><replacement><token>\.js\"</token><value>.js?v=${build.time}\"</value></replacement><replacement><token>\.js\'</token><value>.js?v=${build.time}\'</value></replacement></replacements></configuration></plugin></plugins>
</build>

项目结构:

使用解释:

1. <useCache>true</useCache>,参见Stack Overflow  https://stackoverflow.com/questions/39105557/maven-replacer-plugin-to-replace-tokens-in-build-and-not-source
2. 多文件引入使用<basedir>${build.directory}</basedir>,参见Stack Overflow https://stackoverflow.com/questions/42248547/maven-replacer-plugin-with-multiple-files
3. 通过变量${maven.build.timestamp}获取的时间不是当前时区,故引入插件build-helper-maven-plugin

上面两种都能实现想要的效果,推荐项目中用的第二种,用户可以无感知。

第一种浏览器F12 下可以看到js  css文件后面带了小尾巴,类似  js?126985456987 ,

而第二种的话,只有取war包下去看源码才能看到,并且对代码也改动非常小。

maven-replacer-plugin 静态资源打包方案js css相关推荐

  1. 一篇弄懂webpack静态资源打包器

    认识 webpack是优秀的前端构建工具,静态资源打包器,可以根据模块依赖关系进行静态资源分析,快速打包生成相对应浏览器可以直接识别的静态资源! 环境 1)node环境 2)vs code编辑器 规约 ...

  2. 解决SSM项目下静态资源(img、js、css)无法引用的问题

    解决SSM项目下静态资源(img.js.css)无法引用的问题 参考文章: (1)解决SSM项目下静态资源(img.js.css)无法引用的问题 (2)https://www.cnblogs.com/ ...

  3. 详解vue静态资源打包中的坑与解决方案

    详解vue静态资源打包中的坑与解决方案 参考文章: (1)详解vue静态资源打包中的坑与解决方案 (2)https://www.cnblogs.com/goloving/p/8904545.html ...

  4. maven-replacer-plugin 静态资源版本号解决方案(css/js等)

    maven-replacer-plugin 静态资源版本号解决方案(css/js等) 参考文章: (1)maven-replacer-plugin 静态资源版本号解决方案(css/js等) (2)ht ...

  5. golang打包HTML为Android,使用Go开发Web服务,并打包html/js/css等静态资源文件

    Go的高性能,使它天生适合开发io方面的服务,Web服务当然不再话下.同时,Go编译后生成的单文件不是字节码,而是对应平台的机器码,因此它效率更高.资源占用更低. 为了更好的进程程序管理,移动程序时更 ...

  6. default-servlet-handler 无法访问html,default-servlet-handler不生效缘由,springmvc静态资源拦截方案比较...

    springmvc为何要拦截静态资源? 简单来讲,为了请求的url不带相似*.action,*.do,好比http://localhost:8080/system/index.action,sprin ...

  7. nginx proxy_pass缓存静态资源html和js导致的问题

    正文 昨天拉取前端的静态资源到我电脑本地运行测试,发现不管怎么删发现还是旧的js, 最后重启了nginx解决了.查了下资料,网上说nginx的proxy_pass是会缓存静态资源的,我本地的nginx ...

  8. 使用Maven Assembly plugin将依赖打包进jar

    一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar.以前采用fatjar进行 ...

  9. 问题分析——Maven打包后发版,静态资源找不到

    一.背景 Xxl-Job-Admin(开源分布式调度中心)项目在本地运行正常,Jenkins发版到测试环境,发版成功后,打开管理页面,页面css.js找不到. 怀疑是Maven没有把静态资源打包进去导 ...

  10. SpringMVC拦截静态资源的解决方法

    本文中的各软件版本简要信息: IDE:Myeclise17 JDK:1.8.0_111 spring:5.1.8 springMVC:5.1.8 mybatis:3.2.2 Tomcat:9.0 在使 ...

最新文章

  1. 用了这么久的 Python,居然没注意到这个操作
  2. Python 之 matplotlib (九)contours等高线
  3. html标签思维导图
  4. 【代码】CyclicBarrier栅栏使用示例
  5. 微信红包接口 java_【java微信开发】红包接口调用
  6. Uber柳甄:Uber中国独立核算 谋求国内A股上市
  7. Flutter进阶第10篇: 本地存储,封装本地存储类,实现最简单的状态管理
  8. 数据库:码 属性 候选码 主码的关系
  9. redis 菜鸟教程
  10. ftp连接服务器连接不上,xshell可以连接上
  11. 戴钊《自我教练:迈向自我实现之路》读书笔记
  12. 计算机如何重新连接打印机,打印机脱机怎么处理 打印机重新连接方法教程
  13. SVN Cleanup之后显示Skipped remains conflicted
  14. reactJS项目搭建
  15. android ip v6 teredo,Win7系统通过teredo连接IPv6的方法
  16. unsigned char code 是什么
  17. Elasticsearch 7.9 之 Frozen indices
  18. 圆形标定板_自己改的,圆形标定板,opencv标定代码
  19. 在线人数统计和总访问量统计
  20. 灵汐科技类脑芯片KA200入选2021年世界互联网领先科技成果“提名项目”

热门文章

  1. 帆软FineBI试用
  2. 服务器连接无线键盘,【罗技 K375s 无线蓝牙键盘使用总结】连接|手感_摘要频道_什么值得买...
  3. 树莓派智能家居homeassistant之homekit篇
  4. Explainability in Graph Neural Networks:A Taxonomic Survey 图可解释
  5. 流程图文字及数据表内外连接
  6. 【学习记录】使用多协程和队列,爬取时光网电视剧TOP100的数据
  7. 语言栏删除已经卸载了的输入法
  8. trivial/nontrival函数
  9. Python基础:第25课——使用类和实例
  10. 利用stm32cubemx生成单极性倍频spwm调制代码步骤