我遵循了本教程在spring中对静态资产使用的内容版本策略。所有东西都按预期工作,除了有一个角落的情况,我不知道如何修复:
我的<link>有一个css文件,a.css。如果我查看服务器返回的html,我会发现链接已经被转换为-(Md5).css,这是应该的。我遇到的问题是a.css导入了b.css。Spring还正确地更新了从@import '/css/b.css'到@import '/css/b-(md5).css'的导入--当我更新b.css时出现了问题。因为md5 of a.css是相同的(@a.css是指向静态名称的),所以浏览器正在缓存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());
}发布于 2019-10-16 03:36:25
我找不到办法彻底解决这个问题。我的解决办法是禁用所有css的缓存。
registry.addResourceHandler("/ui/css/**")
.addResourceLocations("classpath:/static/css/")
.setCacheControl(CacheControl.noCache())
.resourceChain(false)
.addResolver(new VersionResourceResolver());https://stackoverflow.com/questions/55960099
复制相似问题