在spring boot中为静态资源设置setCachePeriod

hgu*_*ser 7 java spring spring-boot

我正在使用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); 
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,之后,应用程序无法从该/static文件夹中提供任何内容.

有什么问题?

Ali*_*ani 11

在我看来,最好使用spring.resources.cache-periodproperty来设置默认Boot Resource Handler的缓存周期.所以将以下内容添加到您的application.properties:

spring.resources.cache-period = 31536000
Run Code Online (Sandbox Code Playgroud)

并删除BaseMvcConfig配置文件.

  • `spring.resources.cache-period` 已被弃用,取而代之的是 `spring.resources.cache.period` (4认同)
  • `spring.resources.cache-period` 和 `spring.resources.cache.period` 已弃用。您应该使用:`spring.web.resources.cache.period` (2认同)

Mic*_*fel 8

由于spring.resources.cache-period已弃用,您可能想使用较新的版本spring.web.resources.cache.period,这需要几秒钟(如以前一样),或者Duration像这样的规范:

spring.web.resources.cache.period = P30D
Run Code Online (Sandbox Code Playgroud)

请参阅Duration#parse() JavaDoc 以供参考。

  • `spring.resources.cache.period` 已弃用。现在你应该使用:`spring.web.resources.cache.period` (4认同)