2016-06-29 49 views
3

我正在使用VersionResourceResolver [Spring Boot 1.2.0]進行緩存清除。使用下面的代碼,CSS資源獲取版本號,但即使在使用CssLinkResourceTransformer後,URL內部的css文件也不會獲取版本。CssLinkResourceTransformer不修改css文件中存在的URL

@Bean 
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() { 
    return new ResourceUrlEncodingFilter(); 
} 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/css/**") 
      .addResourceLocations("/css/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new CssLinkResourceTransformer()) 
      .addTransformer(new AppCacheManifestTransformer()); 
} 

.navbar-header { 
    height: 58px; 
    background: transparent url("../images/logo-bg.png") no-repeat left center; 
} 

GET https://localhost:8443/myapp/css/layout-4a5a9811a2a00e7da9b9c0f0fcfbd343.css 
GET https://localhost:8443/myapp/images/logo-bg.png 

我在這裏失蹤的任何東西?如何版本化URL內部的CSS文件。由於

編輯: 對不起,我應該提供的addResourceHandlers方法,我現在有它完整的代碼。請看以下相同,

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/css/**") 
      .addResourceLocations("/css/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new CssLinkResourceTransformer()) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/fonts/**") 
      .addResourceLocations("/fonts/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/html/**") 
      .addResourceLocations("/html/"); 

    registry.addResourceHandler("/images/**") 
      .addResourceLocations("/images/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 

    registry.addResourceHandler("/js/**") 
      .addResourceLocations("/js/") 
      .resourceChain(true) 
      .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**")) 
      .addTransformer(new AppCacheManifestTransformer()); 
} 

回答

2

您的配置與模式相匹配"/css/**""/images/logo-bg.png"不匹配地圖資源。

你可以試試以下嗎?

registry.addResourceHandler("/css/**", "/images/**") 
     .addResourceLocations("/css/", "/images/") 

請注意,要與對方一起工作,資源轉換器/解析器應該在唯一的資源處理器中聲明。

+0

@brain - 感謝您的評論,我用我正在使用的完整代碼更新了我的問題。我已經配置了你的建議,但仍然存在問題。 – sureshd

+2

它不起作用,因爲您已將資源處理基礎架構註冊到單獨的資源處理程序中。嘗試在一個'addResourceHandler'下聲明所有內容,否則資源鏈無法正確處理來自單獨註冊的資源。 –

+0

@brain - 對不起,我遲到了回覆。謝謝你的解決方案,它在一個'addResourceHandler'聲明所有東西后運作 – sureshd