我想为我的静态资源创建一个动态密钥,这是我的应用程序
我有一个Web应用程序(Spring MVC),它的大多数jsp页面都提供静态资源,如图像,js和css等,这些资源都是缓存的。因此,每当我修改css或js时,我只需更改该密钥,以便网页请求不同新路径上的文件。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.my.package" })
public class AppConfig extends WebMvcConfigurerAdapter {
//... some code ...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/here-is-a-key/resource/**")
.addResourceLocations("/static/")
.setCachePeriod(2592000);//30 days
}
//... some code ...
}
这将提供像
这样的静态资源/static/here-is-a-key/resource/js/app.js
每当我对静态资源(图片,css,js)进行更改时,我也会更改密钥
这有助于浏览器或网页请求新资源。 (未缓存) 完美无缺,
但问题是缓存html页面(谷歌等)的服务器或浏览器,在缓存的html页面中,保存的密钥是旧密钥,不再map
任何东西,并抛出404异常。
我希望忽略这部分外卡功能
registry.addResourceHandler("/static/(.*?)/resource/**")
.addResourceLocations("/static/")
以便它匹配缓存路径以及新路径。 所以像
这样的内容/static/key001/resources/** get mapped to /static/
/static/key002/resources/** also mapped on /static/