无论用户访问的内容类型如何,将 CloudFront 放在 ALB 前面是否更好?

Is it better to locate CloudFront in front of ALB regardless of content type a user access?

我想在 AWS 中构建一个 web/application 服务器,我想使用 CloudFront 以低延迟交付内容,并使用 Application Load Balancer (ALB) 来平衡服务器之间的流量。如果有一些内容需要缓存,在ALB前面使用CloudFront应该会有所帮助,但是如果没有,是否仍然建议在性能和成本方面在ALB前面使用CloudFront?例如,推荐以下两种方案中的哪一种?

  1. 无论用户访问什么内容,用户总是通过 CloudFront 访问 ALB。

  2. 用户根据访问的内容直接访问CloudFront或ALB。

哪个模式更好?

这两个选项都没有错,但是在 ALB 之前使用 CloudFront 确实提供了一些优势 even for non-cacheable, dynamic content -- 包括为离 ALB 较远的查看者进行更快的 TLS 协商,以及在全球范围内优化请求路由AWS 边缘网络,从靠近查看器的边缘位置,到 ALB 所在的区域。

根据 ALB 的位置和查看器的位置,与 ALB/EC2 定价相比,CloudFront 到 Internet 的带宽最多可以便宜 0.005 美元/GB,或者可以更多...但从 ALB 到 CloudFront 的带宽是免费的,因此您无需支付这两项费用。