eleaf和带指纹的静态资源

fjnneemd  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(506)

我曾尝试使用resourcesolvers和resourcetranformers向我的一些静态文件(例如app.min.js/style.min.css)添加指纹后缀http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources
我已经像这样配置了resourcehandler

@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("/**")   
                        );
 }
}

在我的主控制器中,我添加了一些调试日志。

logger.debug("js =  '{}'" + this.resourceUrlProvider.getForLookupPath("/build/app.js"));
logger.debug("css = '{}'" + this.resourceUrlProvider.getForLookupPath("/build/styles/style.css"));

运行web应用程序后,从调试日志中,每个文件中都有指纹,如
app-5d2c76ad6517f26d252d5cc93a4fc7d2.js文件
我可以直接访问这个文件localhost:8080/build/app-5d2c76ad6517f26d252d5cc93a4fc7d2.js)
但是,当我在web浏览器中单击“查看源”时,它仍然是一个没有任何指纹的原始文件。
在my layout.html中,我这样加载脚本/链接。

<script th:src="@{/build/app.js}"></script>
 <link th:href="@{/build/styles/style.css}" rel="stylesheet"></link>

我使用thymeleaf作为模板引擎。配置或代码应该是什么,以使thymeleaf包括指纹文件或我错过了什么?
非常感谢你。

kcwpcxri

kcwpcxri1#

确保包含适当的编码过滤器,这是 @{} 用于重写URL的语法:

@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
    return new ResourceUrlEncodingFilter();
}
hlswsv35

hlswsv352#

尝试此操作以呈现指纹和文件名

<script th:src="${@mvcResourceUrlProvider.getForLookupPath('/build/app.js')}" />

上述结果如下:

<script src="/build/app-16e85c31092c68733df3c729b831dcfd.js"></script>

我知道这是晚了,但我正在寻找相同的答案,如何呈现网址与addcontentversionstrategy和这来了,所以希望它能帮助别人。

相关问题