我尝试使用ResourceResolvers和ResourceTransformers为我的一些静态文件(例如app.min.js / style.min.css)添加指纹后缀 http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources
我已经像这样配置了ResourceHandler
select offlocation AS city , count(*) as cnt from
(
select distinct offlocation,offbegindate,crscode from offering
) v
group by city
order by cnt desc;
在我的主控制器中添加了一些调试日志。
@Configuration
@EnableWebMvc
public class ResourceResolverConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("bower_components/**/*.js", "/assets/**", "/build/**")
.addResourceLocations("/bower_components/", "/assets/", "/build/","classpath:/META-INF/webapp/build/")
.resourceChain(true)
.addResolver(
new VersionResourceResolver()
.addContentVersionStrategy("/**")
);
}
}
运行Web应用程序后,从调试日志中,每个文件中都有指纹,如
APP-5d2c76ad6517f26d252d5cc93a4fc7d2.js
我可以直接访问此文件,(即通过localhost:8080 / build / app-5d2c76ad6517f26d252d5cc93a4fc7d2.js)
但是,当我在网络浏览器上点击查看源时,它仍然是没有任何指纹的原始文件。
在我的layout.html中我加载了这样的脚本/链接。
logger.debug("js = '{}'" + this.resourceUrlProvider.getForLookupPath("/build/app.js"));
logger.debug("css = '{}'" + this.resourceUrlProvider.getForLookupPath("/build/styles/style.css"));
我使用Thymeleaf作为模板引擎。 配置或代码应该是什么使Thymeleaf包含指纹文件或者我错过了什么?
非常感谢。
答案 0 :(得分:4)
确保您包含相应的编码过滤器,这是@{}
语法用于重写网址的内容:
@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
return new ResourceUrlEncodingFilter();
}
答案 1 :(得分:1)
尝试此操作以将指纹与文件名
一起呈现<script th:src="${@mvcResourceUrlProvider.getForLookupPath('/build/app.js')}" />
以上结果如下:
<script src="/build/app-16e85c31092c68733df3c729b831dcfd.js"></script>
我知道这已经很晚了,但是我一直在寻找相同的答案来解决如何使用addContentVersionStrategy渲染网址的问题,并且希望能帮助其他人。