首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内容版本策略时缓存中断@导入Spring中的css

使用内容版本策略时缓存中断@导入Spring中的css
EN

Stack Overflow用户
提问于 2019-05-02 20:53:52
回答 1查看 265关注 0票数 1

我遵循了本教程在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也会改变吗?

这是我的配置

代码语言:javascript
复制
@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());
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 03:36:25

我找不到办法彻底解决这个问题。我的解决办法是禁用所有css的缓存。

代码语言:javascript
复制
        registry.addResourceHandler("/ui/css/**")
            .addResourceLocations("classpath:/static/css/")
            .setCacheControl(CacheControl.noCache())
            .resourceChain(false)
            .addResolver(new VersionResourceResolver());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55960099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档