我应如何在API网关中禁用非200 OK响应的缓存。
对于我们的一个API端点,我们实现了补充节流机制,我们发送了429 HTTP响应。
目的是客户端在服务器准备好完成请求后很短的时间内重试请求,但现在发生的情况是API网关缓存初始响应并继续从缓存中发送响应。
答案 0 :(得分:4)
根据对Can AWS API Gateway cache invalidate specific entries based on the response content?的响应,API网关缓存似乎没有“有时”缓存结果的功能。 documentation显示了让客户端发出忽略现有缓存的请求的方法(通过设置Cache-Control: max-age=0
),但没有显示 server 表示“这是一个不应缓存的一次性响应。
我认为值得尝试的第一件事是在错误响应中指定一个类似Cache-Control: max-age=0
的标题,只是为了尝试查看它是否有效。 AWS API Gateway使用CloudFront进行分发,因此它可能正常工作。
如果不起作用,其他选项包括:
Cache-Control: max-age=0
发送您自己的“缓存失效”请求以获取缓存的“实际”值。显然,这会有点棘手,因为你需要知道服务何时启动并可以处理更多请求而不会再次陷入困境,只要再次“免费”再添加一堆请求。