Springboot2 thymeleaf js/css 版本控制

Springboot 2.2.0.RELEASE

1.啓用版本控制

經過對請求js/css附加md5碼或者手動添加版本號方式來保證在js/css內容發生變動時能及時被瀏覽器加載到:css

yml配置

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

java

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(手動添加版本號)spring

<!-- 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進行編寫
相關文章
相關標籤/搜索