Spring Boot Thymeleaf第一次進(jìn)頁(yè)面不加載CSS如何解決

知識(shí)庫(kù)

Spring Boot Thymeleaf第一次進(jìn)頁(yè)面不加載CSS如何解決

2023-10-28 17:44


本文將介紹解決Spring Boot Thymeleaf第一次進(jìn)頁(yè)面不加載CSS的方法。

                                            
    
    

當(dāng)使用Spring Boot結(jié)合Thymeleaf開(kāi)發(fā)Web應(yīng)用時(shí),有時(shí)會(huì)遇到第一次訪問(wèn)頁(yè)面時(shí)CSS樣式無(wú)法正確加載的問(wèn)題。

解決方法

這個(gè)問(wèn)題通常是由于Thymeleaf的緩存機(jī)制導(dǎo)致的。Thymeleaf會(huì)將編譯過(guò)的HTML緩存起來(lái),以提高性能。但是,當(dāng)引入CSS文件時(shí),由于緩存機(jī)制,第一次訪問(wèn)頁(yè)面時(shí)可能無(wú)法加載最新的CSS文件。

為了解決這個(gè)問(wèn)題,可以在Thymeleaf的模板中添加一個(gè)版本號(hào),來(lái)實(shí)現(xiàn)緩存的更新。

步驟

  1. 在CSS文件的URL后面添加一個(gè)查詢(xún)參數(shù),如:
  2. 在應(yīng)用的啟動(dòng)類(lèi)中,配置Thymeleaf的緩存模式為不使用緩存,代碼如下:
        
@Configuration
public class ThymeleafConfig implements WebMvcConfigurer {    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }    @Bean
    public TemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setEnableSpringELCompiler(true);
        engine.addDialect(new LayoutDialect());
        engine.setCacheManager(nonCacheManager());
        return engine;
    }    @Bean
    public ICacheManager nonCacheManager() {
        return new NonCacheManager();
    }
}
        
    

通過(guò)以上步驟,每次更新CSS文件時(shí)只需要修改查詢(xún)參數(shù)的版本號(hào),Thymeleaf會(huì)認(rèn)為有新的資源文件,從而重新加載CSS文件。

總結(jié)

通過(guò)在Thymeleaf模板中添加版本號(hào),并禁用Thymeleaf的緩存機(jī)制,可以解決Spring Boot Thymeleaf第一次進(jìn)頁(yè)面不加載CSS的問(wèn)題。

希望本文能對(duì)你解決這個(gè)問(wèn)題有所幫助!


標(biāo)簽:
  • Spring Boot
  • Thymeleaf
  • CSS
  • 解決方法