如何在内容更新时使动态内容的 CloudFront 缓存失效

Yas*_*UNO 5 caching amazon-cloudfront aws-api-gateway

我正在使用 AWS Lambda、API Gateway 和 CloudFront 开发 Web API。
CloudFront 目前用作 API Gateway 某些端点的反向代理,缓存行为完全被禁用。

有几个常用的API,其内容很少更新(例如每周一次或每月一次),因此可以进行缓存以加快响应时间。

但是,我想知道如何在内容更新时使经常使用但很少更新的动态内容的此类 CloudFront 缓存失效。
我的观察是,CloudFront 保留旧内容的缓存,因为 CloudFront 不会将请求传递到 API 源,直到缓存达到 max-age。

例如:假设我有一个GET /projects/PROJECT_ID/membersAPI。
项目成员很少更新,但是一旦通过PUT /projects/PROJECT_ID/membersAPI 添加/删除成员,缓存就应该失效,以提供项目成员最新更新的内容。

每次更新其内容(调用)后,我是否应该使用失效 API使非常特定的 URL(/projects/ABC/members对于上面的示例)无效? 或者,我应该避免缓存此类动态内容吗?PUT /projects/ABC/members

Rez*_*avi 1

您有两个选择:

1-每次有人编辑您的会员列表时调用失效 API。例如,如果有人添加/删除/编辑成员列表(不是获取请求),您应该调用 Cloudfront 中的失效 API 并使路径失效

/项目/PROJECT_ID/成员

2-控制API端的缓存,有时您也可以为某些资源设置标头以在Cloudfront中缓存。

有关 CloudFront 失效 API 的更多信息,请查看以下链接

https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html