2017-08-24 53 views
2

我想缓存控制所有静态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不修改,而不是200 OK?

任何想法为什么?谢谢

回答

1

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

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

如果这是关系到春季安全,你可能想订阅this issue和使用the following workaround

如果不是,请提供您的问题的详细信息(请求和响应头是一个良好的开端)。

+0

嗯,它看起来像弹簧安全设置参数:默认无缓存。 ()。cacheControl()。disable() –

+0

用Spring安全编辑我的答案 –