Html 使用内容版本策略时在Spring中破坏缓存@import css
我接着在spring中为静态资产使用了内容版本策略。除了一个我不知道如何解决的小问题外,一切都正常工作: 我的HTML有一个到css文件的Html 使用内容版本策略时在Spring中破坏缓存@import css,html,css,spring,spring-boot,caching,Html,Css,Spring,Spring Boot,Caching,我接着在spring中为静态资产使用了内容版本策略。除了一个我不知道如何解决的小问题外,一切都正常工作: 我的HTML有一个到css文件的,a.css。如果我查看服务器返回的html,我会看到链接已经被转换为-(md5).css,这是应该的。我的问题是a.css导入b.css。Spring还正确地将导入从@import'/css/b.css'更新到@import'/css/b-(md5.css'更新b.css时出现问题。由于a.css的md5是相同的(@import是静态名称),浏览器正在缓存a
,a.css
。如果我查看服务器返回的html,我会看到链接已经被转换为-(md5).css,这是应该的。我的问题是a.css
导入b.css
。Spring还正确地将导入从@import'/css/b.css'
更新到@import'/css/b-(md5.css'
更新b.css
时出现问题。由于a.css
的md5是相同的(@import是静态名称),浏览器正在缓存a-(md5).css
的请求,该请求仍然指向已解析的b-(old-md5).css
,我最终得到了错误的样式
这听起来像是一个常见的问题。如何解决这个问题?是否可以告诉版本策略在解析链接后计算md5,以便如果依赖项的md5发生更改,那么依赖项的md5也会发生更改 这是我的配置
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//content-based versioning and max caching
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.setCacheControl(MAX_CACHE_DURATION)
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"))
.addTransformer(new CssLinkResourceTransformer());
//no cache
registry.addResourceHandler("/*.html").setCacheControl(CacheControl.noCache());
}
我找不到一个干净的方法来解决这个问题。我的解决方法是禁用所有css的缓存
registry.addResourceHandler("/ui/css/**")
.addResourceLocations("classpath:/static/css/")
.setCacheControl(CacheControl.noCache())
.resourceChain(false)
.addResolver(new VersionResourceResolver());
我找不到一个干净的方法来解决这个问题。我的解决方法是禁用所有css的缓存
registry.addResourceHandler("/ui/css/**")
.addResourceLocations("classpath:/static/css/")
.setCacheControl(CacheControl.noCache())
.resourceChain(false)
.addResolver(new VersionResourceResolver());