如何根据路径参数和查询参数使API网关的缓存失效
How to invalidate the cache of an API gateway based on path parameters and query parameters
我有一个如下所示的 GET 端点:
GET /tenant/:tenantId/groups?user=userName
现在,也有相应的 POST 端点。当 POST 端点用于更新给定用户名的组时,我想使用该用户名禁用此 GET 端点的缓存。
POST
请求可以由任何用户发出,不一定只是这个用户,这样前端就不知道用
调用 API
Cache-Control: max-age=0
我们如何根据路径参数和查询参数使API网关的缓存失效?
api gw caching is very straight forward
另一方面,缓存失效通常作为 header 传递给该端点。如果您可以接受最终一致的模型,那么默认的 300 秒通常就可以了。
假设这还不够好,并且您需要 POST 使其他 api 无效,您可以:
- 使用 elasticache 然后你有一个缓存,你可以使所有内容失效
- 运行 针对每个 api gw 的查询
缓存
其他端点的条目使它们无效,可能通过
POST 正在处理的 lambda
- 禁用缓存,性能可能会受到影响
- 联系 AWS Support 并询问您有什么选择,因为还有其他我可能错过的选择
- 刷新整个缓存:
aws apigateway flush-stage-cache help
- 让一切成为POST/PUT、sec guidelines
- 使用 Aws AppSync 消除了处理缓存的要求(假设使用 GraphQL 而不是 REST)
您是否使用 DynamoDB 存储数据?
如果是这样,您可以使用 DynamoDB Stream 触发 Lambda 函数,该函数清除特定记录的缓存键参数的API 网关缓存。
如果您需要设置 IAM 策略或创建签名请求,请参阅此 AWS 资源。
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html
我有一个如下所示的 GET 端点:
GET /tenant/:tenantId/groups?user=userName
现在,也有相应的 POST 端点。当 POST 端点用于更新给定用户名的组时,我想使用该用户名禁用此 GET 端点的缓存。
POST
请求可以由任何用户发出,不一定只是这个用户,这样前端就不知道用
Cache-Control: max-age=0
我们如何根据路径参数和查询参数使API网关的缓存失效?
api gw caching is very straight forward
另一方面,缓存失效通常作为 header 传递给该端点。如果您可以接受最终一致的模型,那么默认的 300 秒通常就可以了。
假设这还不够好,并且您需要 POST 使其他 api 无效,您可以:
- 使用 elasticache 然后你有一个缓存,你可以使所有内容失效
- 运行 针对每个 api gw 的查询 缓存 其他端点的条目使它们无效,可能通过 POST 正在处理的 lambda
- 禁用缓存,性能可能会受到影响
- 联系 AWS Support 并询问您有什么选择,因为还有其他我可能错过的选择
- 刷新整个缓存:
aws apigateway flush-stage-cache help
- 让一切成为POST/PUT、sec guidelines
- 使用 Aws AppSync 消除了处理缓存的要求(假设使用 GraphQL 而不是 REST)
您是否使用 DynamoDB 存储数据?
如果是这样,您可以使用 DynamoDB Stream 触发 Lambda 函数,该函数清除特定记录的缓存键参数的API 网关缓存。
如果您需要设置 IAM 策略或创建签名请求,请参阅此 AWS 资源。 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html