我有一个Spring MVC(4.3.0)应用程序,并注册了一个VersionResourceResolver,并在ResourceHandlerRegistry中添加了ContentVersionStrategy.我启用了ResourceUrlEncodingFilter.
@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
return new ResourceUrlEncodingFilter();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
boolean devMode = this.env.acceptsProfiles("local");
//boolean useResourceCache = !devMode;
Integer cachePeriod = devMode ? 0 : (60 * 60 * 24 * 365); //If dev clear cache else 1 year
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/")
.setCachePeriod(cachePeriod)
.resourceChain(false)
.addResolver(new VersionResourceResolver()
.addContentVersionStrategy("/**"))
.addTransformer(new AppCacheManifestTransformer());
}
Run Code Online (Sandbox Code Playgroud)
当我使用c:url或spring:url标签访问JSP页面上的/ resources(JS,Images,CSS等)中的任何内容时,"versioned"URL不显示(意思是:URL中没有哈希代码) .例:
<link href="<c:url value="/resources/css/views/login.css" />" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
在检查页面时生成:/myapp/resources/css/views/login.css作为URL字符串.
但是,如果我在Controller中使用ResourceURLProvider,我确实在URL中看到了哈希码:
@Autowired
private ResourceUrlProvider mvcResourceUrlProvider;
@RequestMapping(value = { "/" }, method = RequestMethod.GET) …Run Code Online (Sandbox Code Playgroud)