Q3 — AWS SAA-C03 第13章
第 3/100 题 | ← 返回第13章
Q903. 一家公司在 Amazon S3 上托管一个高流量静态网站,其默认 TTL 为 0 秒的 Amazon CloudFront 发行版.该公司希望实施缓存以提高网站的性能.但是,该公司还希望确保在部署后几分钟内不会提供过时的内容.解决方案架构师应实施哪种缓存方法组合来满足这些要求?(选择两个.)
- A. 将 CloudFront 默认 TTL 设置为 2 分钟. ✓
- B. 在 S3 存储桶上设置 2 分钟的默认 TTL.
- C. 向 Amazon S3 中的对象添加 Cache-Control 私有指令. ✓
- D. 创建一个 AWS Lambda@Edge 函数,将 Expires 标头添加到 HTTP 响应中.配置该函数以在查看器响应上运行.
- E. 向 Amazon S3 中的对象添加 24 小时的 Cache-Control max-age 指令.部署时,创建 CloudFront 失效以从边缘缓存中清除任何更改的文件.
正确答案: A. 将 CloudFront 默认 TTL 设置为 2 分钟., C. 向 Amazon S3 中的对象添加 Cache-Control 私有指令.
解析
为了满足通过缓存提高网站性能并确保部署后不超过几分钟提供过时内容的要求,可以实现以下两种缓存方法:A. 将 CloudFront 默认 TTL 设置为 2 分钟.通过将 CloudFront 默认 TTL(生存时间)设置为 2 分钟,CloudFront 将缓存内容最多 2 分钟.这意味着 2 分钟窗口内对相同内容的后续请求将从 CloudFront 缓存提供服务,从而提高性能.但是,2 分钟后,CloudFront 将检查源(在本例中为 S3 存储桶)是否有任何内容更改.C. 向 Amazon S3 中的对象添加 Cache-Control 私有指令.通过向 Amazon S3 中的对象添加 Cache-Control 私有指令,您可以控制单个对象的缓存行为.私有指令指示内容应由浏览器缓存,而不是由中间缓存(例如 CloudFront 边缘站点)缓存.这允许浏览器缓存内容并提高后续请求的性能,同时确保 CloudFront 始终检查源是否有任何更改.选项 B 建议在 S3 存储桶上设置 2 分钟的默认 TTL.但是,直接在 S3 存储桶上设置 TTL 并不能控制 CloudFront 的缓存行为.CloudFront 有自己的缓存行为,需要单独配置.因此,选项 B 不是正确的选择.选项 D 建议创建一个 AWS Lambda@Edge 函数,以将 Expires 标头添加到 HTTP 响应中.虽然可以做到这一点,但它并不是最适合给定要求的解决方案.Expires 标头是一种用于控制缓存行为的较旧机制,建议改用 Cache-Control 标头.此外,为此目的使用 Lambda@Edge 可能会带来额外的复杂性和开销.因此,选项 D 不是最合适的选择.选项 E 建议向 Amazon S3 中的对象添加 24 小时的 Cache-Control max-age 指令,并在部署时创建 CloudFront 失效,以从边缘缓存中清除任何更改的文件.虽然此方法允许更长时间地缓存内容,但它不能确保在部署后的几分钟内不会提供过时的内容.此外,使用 CloudFront 失效可能成本高昂,而且可能不是处理频繁部署的最有效方法.因此,选项E不是正确的选择.总之,为了满足通过缓存提高网站性能的要求,并确保部署后几分钟内不提供陈旧内容,请将 CloudFront 默认 TTL 设置为 2 分钟(选项 A)并添加 Cache-Control 私有指令Amazon S3 中的对象(选项 C)是建议实施的缓存方法.