为什么spring boot将Expires标头设置为Expires:?

时间:2017-08-24 11:07:32

标签: spring spring-mvc spring-boot

我试图缓存控制所有静态css / js文件。代码看起来像:

  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/console/*.js","/console/*.css","/console/*.png","/console/*.svg")
                .addResourceLocations(
                ResourceUtils.CLASSPATH_URL_PREFIX + "/public/console/"

        ).setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS).cachePublic());
    } 

我可以看到正确设置了Cache-Control标头。但为什么Expires总是空白?我期待刷新所有css / js应该返回304 Not Modified而不是200 OK?

知道为什么吗?感谢

1 个答案:

答案 0 :(得分:1)

不再需要Expires,最新版本的Spring采用了前端缓存的最佳做法(请参阅CacheControloriginal commit)。

现在,如果您未获得预期结果,可能是因为您的浏览器正在发送Cache-Control: no-cache请求标头。如果您已经检查过"禁用缓存"浏览器开发人员工具中的复选框,或者如果您使用" ctrl + R"刷新页面。

如果这与Spring Security有关,您可能需要订阅this issue并使用the following workaround

如果没有,请在您的问题中提供更多信息(请求和响应标题是一个良好的开端)。