我正在尝试配置springboot app。使用config类来缓存javascript文件的缩小版本。
配置类:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
VersionResourceResolver versionResourceResolver = new VersionResourceResolver()
.addVersionStrategy(new ContentVersionStrategy(), "/**");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/images/**").addResourceLocations("classpath:/static/images/");
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/")
.setCachePeriod(60 * 60 * 24 * 7).resourceChain(true).addResolver(versionResourceResolver);
}
}
HTML:
<head>
..
<script th:src="${@mvcResourceUrlProvider.getForLookupPath('/js/user.min.js')}" />
..
</head>
Spring应该发送一个带有缓存参数的cookie,但它没有,但是如果我使用 user.js 的非缩小版本,那么浏览器会成功缓存它:
<head>
..
<script th:src="${@mvcResourceUrlProvider.getForLookupPath('/js/user.js')}" />
..
</head>
js资源文件在src / main / resources / static / js文件夹下彼此相邻。无论是否缓存,它们都能正常工作。
我错过了什么?
答案 0 :(得分:0)
奇怪的是,解决方案非常简单....而不是
.setCachePeriod(60 * 60 * 24 * 7)
我必须使用(带一点重构):
.setCacheControl(CacheControl.maxAge(7, TimeUnit.DAYS)).resourceChain(true)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));