我已经设置了CloudFront发行版,以便<domain>/api
将我重定向到<api-gateway-url>/<env>/api
。但是,我发现有时CloudFront会缓存对GET请求的响应,而浏览器不会重定向到API Gateway端点并返回已缓存的响应。
示例:/api/getNumber
重定向到<api-gateway-url>/<env>/api/getNumber
并返回我2。我更改了响应,以便它应返回数字300,但是当我通过浏览器发出请求时,现在没有重定向,并且我仍然回到第二位。 x-cache
响应标头显示来自CloudFront的缓存命中。
答案 0 :(得分:0)
AWS CloudFront通常用于缓存,因此减少了将消耗后端资源的请求数量。因此,如果要立即查看更改,则不应在测试环境上使用CloudFront。
在您的情况下,您的端点似乎没有任何参数(路径/查询),因此从本质上讲,CloudFront每次看到的都是相同的请求,在这种情况下,您自然会命中缓存。
您有两个选项可以“修复”该问题:
使用CloudFront's TTL options,使CloudFront减少缓存对象的时间
注意:如果是生产环境,则不建议这样做,因为这可能会消除整个缓存点并破坏预期的行为
为那些不带参数和/或响应经常变化的路径禁用CloudFront的缓存,从而在其余分发中继续缓存:
https://aws.amazon.com/premiumsupport/knowledge-center/prevent-cloudfront-from-caching-files/
最后,如果这只是您的测试环境,请禁用CloudFront,但以上内容稍后可能会应用于您的生产环境