Spring boot 在WebFlux中禁用HTTP缓存

Spring boot 在WebFlux中禁用HTTP缓存,spring-boot,spring-webflux,http-caching,Spring Boot,Spring Webflux,Http Caching,在Spring Boot MVCapp中,我通过以下方式禁用HTTP缓存: WebContentInterceptor cacheInterceptor = new WebContentInterceptor(); cacheInterceptor.setCacheSeconds(0); cacheInterceptor.setUseExpiresHeader(true); cacheInterceptor.setUseCacheControlHeader(true); cacheInterce

Spring Boot MVC
app中,我通过以下方式禁用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.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);
    }
}
类NoStoreWebFilter实现WebFilter{
@凌驾
公共Mono筛选器(服务器WebExchange exchange、WebFilterChain链){
exchange.getResponse().getHeaders()
.setCacheControl(CacheControl.noStore().getHeaderValue());
返回链。过滤器(交换);
}
}

如果您使用的是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);
    }
}
类NoStoreWebFilter实现WebFilter{
@凌驾
公共Mono筛选器(服务器WebExchange exchange、WebFilterChain链){
exchange.getResponse().getHeaders()
.setCacheControl(CacheControl.noStore().getHeaderValue());
返回链。过滤器(交换);
}
}

谢谢,我只需要将
setCacheControl(CacheControl.noStore())
更改为
setCacheControl(“无存储”)
,因为此方法接受
String
,而
CacheControl\toString
没有实现。谢谢,我只需要更改
setCacheControl(CacheControl.noStore())
setCacheControl(“无存储”)
,因为此方法正在接受
字符串
,并且
CacheControl 35; toString
未实现。