【发布时间】:2018-07-21 19:42:47
【问题描述】:
我正在尝试使用 Spring Mvc 4 进行资源版本控制。我使用 thymeleaf 模板引擎。但不适用于以下代码。加载页面时,当我查看页面源时看不到新版本的 Url。那么我的问题是什么代码?我想念什么?
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/theme*//**").addResourceLocations("/resources/static/theme/")
.setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS))
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"))
.addTransformer(new CssLinkResourceTransformer());
registry.addResourceHandler("/static*//**").addResourceLocations("/resources/static/")
.setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS))
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"))
.addTransformer(new CssLinkResourceTransformer());
registry.addResourceHandler("/static/js*//**").addResourceLocations("/resources/static/js/")
.setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS))
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"))
.addTransformer(new CssLinkResourceTransformer());
}
@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
return new ResourceUrlEncodingFilter();
}
我在脚本标签中使用 with 表达式。 th:src="@{/resources/static/js/companyList.js}"
【问题讨论】:
-
我有非常相似的非工作代码;对我来说,它没有设置缓存控制标头,表明它没有使用处理程序。您的版本是否将标头设置为 365 天?
-
我的问题是相关的资源路径。错误创建的 url 导致了问题。当你查看页面的源代码时你能看到带有 md5 的版本控制 url 吗?如果你看到问题仍然存在?我的问题解决了,现在我可以看到 365 天的缓存头了。
标签: javascript java spring-mvc caching thymeleaf