spring-boot - 在 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 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);
}
}
推荐阅读
- ubuntu-20.04 - Apache2 H10292 自动更新后代理 UDS 文件名无效错误(Ubuntu 20.04)
- .net - 如何将数字/文本添加到 winform,以便应用程序的每个副本都是唯一可识别的?
- go - 在 Go 中从 Kafka REST 代理中提取数据
- python - 在特定分钟删除行
- javascript - Javascript - 这可以在循环中重写吗?
- java - 如何将此 Json 映射到 Gson?
- python - 如何使用 OpenCV 获取图像的 frame_width?
- android - 基于键盘是否打开的拉伸视图
- c# - 如何让后备服务提供者返回编译时未知的类型参数的 Mock
- c# - 使 .NET Core 控制器动作非阻塞