我正在使用 AWS Lambda、API Gateway 和 CloudFront 开发 Web API。
CloudFront 目前用作 API Gateway 某些端点的反向代理,缓存行为完全被禁用。
有几个常用的 API,其中内容很少更新(例如每周一次或每月一次),因此可以进行缓存以加快响应时间。
但是,我想知道如何在内容更新时使经常使用但很少更新动态内容的此类 CloudFront 缓存失效。
我的观察是,CloudFront 保留旧内容的缓存,因为 CloudFront 不会将请求传递到 API 源,直到缓存达到 max-age。
例如:假设我有一个 GET/projects/PROJECT_ID/members
API。
项目成员很少更新,但一旦通过 PUT/projects/PROJECT_ID/members
API 添加/删除成员,缓存应失效以提供项目成员的最新更新内容。
我是否应该使用 invalidation API 使非常特定的 URL(上面的示例中的 /projects/ABC/members
)失效?每次更新其内容后(PUT/projects/ABC/members
调用)?
或者,我应该避免缓存此类动态内容吗?
最佳答案
您有两个选择:
1-每次有人编辑您的成员列表时调用失效 API。 例如,如果有人添加/删除/编辑成员列表(不是获取请求),您应该调用 Cloudfront 中的失效 API 并使路径失效
/projects/PROJECT_ID/members
2-控制API端的缓存,有时您也可以为某些资源设置 header 以在Cloudfront中缓存。
有关 CloudFront 失效 API 的更多信息,请查看以下链接
https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html
关于caching - 如何在内容更新时使动态内容的 CloudFront 缓存失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49705089/