Spring MVC:正则表达式可以映射WebMvcConfigurerAdapter中的静态内容

时间:2016-10-28 12:51:11

标签: spring spring-mvc caching

我想为我的静态资源创建一个动态密钥,这是我的应用程序

我有一个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/

0 个答案:

没有答案