在 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);
}
}
在 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);
}
}