我正在使用spring boot,/static
作为静态资源(如js和css)提供,到目前为止一直很好,而我想设置这些文件的缓存头,所以我尝试了这个:
@Configuration
public class BaseMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/").setCachePeriod(24 * 3600 * 365);
}
}
然而,在此之后,应用程序无法提供/static
文件夹中的任何内容。
问题是什么?
答案 0 :(得分:11)
在我看来,最好使用spring.resources.cache-period
属性来设置默认Boot 资源处理程序的缓存时间。请将以下内容添加到application.properties
:
spring.resources.cache-period = 31536000
并删除BaseMvcConfig
配置文件。
答案 1 :(得分:1)
如果要对控制器使用spring security,为静态内容使用setup cache,那么您可能希望在WebSecurityConfigurerAdapter中配置异常并在application.properties中设置缓存周期:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/js/**", "/css/**");
}
#1 week cache
spring.resources.cache-period = 604800
答案 2 :(得分:0)
由于不推荐使用spring.resources.cache-period
,因此您可能想使用较新的spring.resources.cache.period
,这可能需要花费几秒钟(和以前一样)或类似这样的Duration
规范:
spring.resources.cache.period = P30D
有关参考,请参见Duration#parse() JavaDoc。