我正在尝试对所有静态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的最新版本采用了前端缓存的最佳实践(请参阅CacheControl和original 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/