1

在为我的所有动态端点使用 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 注释的指针?谢谢

4

0 回答 0