在 WebFlux 中禁用 HTTP 缓存

Disable HTTP cache in WebFlux

Spring Boot MVC 应用程序中,我以这种方式禁用 HTTP 缓存:

WebContentInterceptor cacheInterceptor = new WebContentInterceptor();
cacheInterceptor.setCacheSeconds(0);
cacheInterceptor.setUseExpiresHeader(true);
cacheInterceptor.setUseCacheControlHeader(true);
cacheInterceptor.setUseCacheControlNoStore(true);
registry.addInterceptor(cacheInterceptor);

如何在 Spring Boot WebFlux 应用程序中执行?

如果您正在使用 Spring Boot 并且您希望防止对静态资源进行缓存,您可以使用以下配置来实现 属性:

spring.web.resources.cache.cachecontrol.no-store=true

如果您想为一切禁用缓存,包括 REST 调用和视图等;然后你可以实现一个自定义的 WebFilter 来做这件事并将它作为一个 bean 在你的应用程序中公开:

class NoStoreWebFilter implements WebFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        exchange.getResponse().getHeaders()
                .setCacheControl(CacheControl.noStore().getHeaderValue());
        return chain.filter(exchange);
    }
}