Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用内容版本策略时在Spring中破坏缓存@import css_Html_Css_Spring_Spring Boot_Caching - Fatal编程技术网

Html 使用内容版本策略时在Spring中破坏缓存@import 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

我接着在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-(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());