Springboot2 thymeleaf js/css 版本控制

Springboot 2.2.0.RELEASE

1.启用版本控制

通过对请求js/css附加 md5码
或者 手动添加版本号
方式来保证在js/css内容发生变更时能及时被浏览器加载到:

yml配置

spring:
  thymeleaf:
    mode: HTML
    cache: false
    resources:
    chain:
      strategy:
        content:
          enabled: true
          paths: /**
      enabled: true
      cache: false
    static-locations: classpath:/static/

java配置

@Configuration
public class MvcInterceptorConfig implements WebMvcConfigurer {

    /**
     * 功能描述
     * <p>
     *    .addFixedVersionStrategy("v1.0.1", "/**") 为手动添加版本号方式
     *    .addContentVersionStrategy("/**") 为md5码方式
     * </p>
     *
     * @param registry registry
     * @return void
     * @author wandoupeas
     * @date 2019-11-06
     * @since 2019-11-06
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .resourceChain(false)
                .addResolver(new VersionResourceResolver()
//                                     .addFixedVersionStrategy("v1.0.1", "/**")
                                     .addContentVersionStrategy("/**")
                );
    }
}

2.Thymeleaf页面引用

正常的abc.js浏览器加载时会变成abc-83fb8c4d9199dce0224da0206423106f.js(md5)或/v1.0.1/abc.js(手动添加版本号)

<!-- css引用 -->
<link th:href="@{/abc.css}" rel="stylesheet">
<link th:href="@{/css/def.css}" rel="stylesheet">

<!-- js引用 -->
<script th:src="@{/abc.js}"></script>
<script th:src="@{/js/def.js}"></script>

3.BUG修复

以上方式一般情况下就可以达到需求效果,但是在实际开发过程中由于相对复杂的场景导致以上配置可能会不生效,通过添加以下 Bean
就能解决

@SpringBootApplication
public class XxxApplication {

    public static void main(String[] args) {

        SpringApplication.run(XxxApplication.class, args);

    }

    /**
     * 功能描述
     * <p>
     *    添加静态资源md5版本控制
     * </p>
     *
     * @author wandoupeas
     * @date 2019-11-06
     * @since 2019-11-06
     */
    @Bean
    public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
        return new ResourceUrlEncodingFilter();
    }
}

本文使用OpenWrite进行编写

原文 

https://segmentfault.com/a/1190000020926174

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Springboot2 thymeleaf js/css 版本控制

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址