API网关缓存未生效。

8
如何为API网关端点启用适当的缓存?
我已经启用了API缓存(请参见截图),但是当我请求URL时,响应时间与以前相同。
我尝试启用API缓存选项:

Cache option

并配置了Cache-Control头:

Cache-Control header

并且通过查询参数启用了缓存:

Query param cache


你们的集成后端是什么?你们有查看日志的能力来确定在缓存应该发生时是否已调用了后端吗? - Bob Kinney
后端是一个 Lambda。 - katspaugh
2个回答

14

API网关中的缓存并不是通过CloudFront实现的。在创建API时,API网关会代表您创建一个CloudFront分配,但实际上缓存是通过使用专用缓存基础设施来实现的。即使启用了缓存,您仍将从CloudFront看到“缓存未命中”标头。


嗨Bob,感谢你的纠正。那么你是说X-Cache: Miss from cloudfront不是缓存未工作的指标吗? - katspaugh
@katspaugh 是的,那正是我想说的。 - Bob Kinney
事实是,启用或禁用API缓存后,响应时间似乎也是相同的。我想我需要重新表达问题。 - katspaugh
@katspaugh,你的集成运行需要多长时间?API网关确实会产生一些开销。 - Bob Kinney
2
@BobKinney 那么,有什么方法可以确认响应是从 API 网关缓存中获取的吗? - Joshua Robinson
@JoshuaRobinson 这已经在 CloudWatch 中记录,但当前响应中没有包含任何指示。 - Bob Kinney

8

我发现AWS论坛提供了更多的见解,如果有帮助的话。

API Gateway与CloudFront在幕后进行集成。我们自动为您的API创建全球CloudFront分发,以减少终端用户感知的延迟。然而,API Gateway缓存是在API Gateway运行和部署您的API的区域中处理的。请求由CloudFront PoP接受,然后发送到API Gateway的源地区,在那里API Gateway将根据其缓存检查并在可能的情况下返回缓存响应。目前,API Gateway不使用CloudFront边缘缓存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接