一个照片共享应用将原始图片存储在 Amazon S3 中,并通过 CloudFront 提供服务。每个移动设备都将其显示尺寸和分辨率作为 GET 参数发送。为了经济高效地为每个设备提供优化的图片并缩短加载时间、提高图片质量,哪种解决方案最佳?
选择一个答案
点击一个选项来检查您的答案。
正确答案: 使用 Lambda@Edge 函数按需优化图片并在响应中返回图片,并让同一个函数将处理后的图片保存到 Amazon S3 以供后续请求使用。.
为什么这是答案
此选项最佳,因为它结合了按需优化和缓存。Lambda@Edge 可以在 CloudFront 边缘位置实时处理图片,根据设备参数进行优化,从而确保图片始终是最新的且针对特定设备进行了调整。同时,将处理后的图片保存到 S3 可以作为持久缓存,后续对相同设备参数的请求可以直接从 S3 提供,避免重复处理,降低成本并提高响应速度。 其他选项的不足在于: 使用 S3 Batch Operations 预先生成所有变体效率低下且成本高昂,因为设备类型和分辨率组合可能非常多,且许多变体可能永远不会被请求。动态 CloudFront 源也无法有效处理如此大量的预生成变体。 即使使用 S3 Batch Operations 预生成变体,Lambda@Edge 路由也无法解决预生成变体数量庞大和存储成本高的问题。 仅使用 Lambda@Edge 按需优化而不缓存到 S3,会导致每次请求都重新处理图片,增加 Lambda 调用成本和延迟,即使设置了 CloudFront TTL,也无法避免源站的重复处理。
通过考试 — 无需无休止地寻找答案
将本次考试的所有验证问题和解释集中在一处,节省数小时的准备时间。1,000+ 认证 · 20+ 语言 · 免费开始。
更快通过考试 → 无需银行卡