首页 > 解决方案 > 在 WebFlux 中禁用 HTTP 缓存

问题描述

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-bootspring-webfluxhttp-caching

解决方案


如果您使用的是 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);
    }
}

推荐阅读