在为我的所有动态端点使用 spring-security 默认 CacheControl 时,我试图让浏览器缓存我的静态资源......因此我为它们覆盖了 ResourceHandler,如下所示:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**")
.addResourceLocations("classpath:/static/js/")
.setCacheControl(CacheControl.maxAge(10, TimeUnit.HOURS).cachePrivate());
}
}
这工作正常,当浏览器第一次获取资源时,我得到一个标题
Cache-Control: max-age=36000
但是,当浏览器使用If-Modified-Since标头检查资源是否在缓存期结束之前已更新时,服务器会回复 304 响应和标头
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
然后浏览器会在页面重新加载时再次下载资源。
我想要的是设置 304 响应的 Cache-Control 标头,这样浏览器就不会在每两个 GET 请求上下载资源。任何使用 Java 注释的指针?谢谢