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
未实现。