我正在尝试对所有静态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?

知道为什么吗?谢谢

最佳答案

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

现在,如果您没有获得预期的结果,可能是因为您的浏览器正在发送Cache-Control: no-cache请求标头。如果您已经在浏览器开发人员工具中选中了“禁用缓存”复选框,或者使用“ctrl + R”刷新了页面,则通常会发生这种情况。

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

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

关于spring - 为什么Spring Boot将Expires header 设置为Expires :?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45860033/

10-09 21:19