禁用WebFlux中的HTTP缓存

时间:2018-09-19 14:00:09

标签: spring-boot spring-webflux http-caching

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应用中进行操作?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Spring Boot,并且希望避免缓存静态资源,则可以使用以下配置属性来实现:

spring.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);
    }
}