如何在AWS API Gateway中为特定REST API GET请求禁用缓存?
针对REST类型AWS API Gateway特定GET请求禁用缓存的实现方案
完全可以实现,无需禁用整个阶段缓存或迁移API,以下是几种实用方案:
方案1:利用缓存键参数实现"伪禁用"
- 针对目标GET方法,在其集成请求的缓存键参数中,添加一个每次请求都会变化的参数(比如时间戳、随机值)。例如配置自定义参数
cache-buster,通过映射模板自动生成$context.requestTimeEpoch作为该参数的值。 - 原理:每次请求的缓存键会因动态参数不同而无法命中已有缓存,等同于禁用该请求的缓存。
方案2:通过响应头强制禁用缓存
- 在目标GET方法的集成响应中,添加
Cache-Control响应头,设置值为no-cache, no-store, must-revalidate。 - 原理:该头会告知API Gateway和客户端不缓存任何响应内容,每次请求都会直接触发后端调用。
方案3:使用阶段变量+条件缓存
- 在API的阶段配置中创建阶段变量(比如
disable_cache),默认值设为false。 - 进入目标GET方法的缓存设置,将缓存启用条件设为
$stageVariables.disable_cache != 'true'。 - 针对该方法单独覆盖阶段变量值为
true,其他方法保持默认。
- 原理:通过条件判断仅对目标请求禁用缓存,其余请求正常使用阶段缓存配置。
内容的提问来源于stack exchange,提问作者317 3535
相关产品推荐
相关产品推荐

