为什么具有 ALB 自定义源的 CloudFront 分配比没有 CloudFront 的 ALB 慢?

Why is a CloudFront distribution with an ALB custom origin slower than the ALB without CloudFront?

我创建了一个 CloudFront 分配,将 ALB 作为自定义源。启用缓存的最小和默认 TTL 为一天(当然以秒为单位)。

经过多次测试,我意识到我的 CloudFront 分发比原始 ALB 慢。

有人对此有解释吗?

CloudFront 向网络路径添加了一个额外的跃点。

如果没有 CloudFront,请求将直接进入 ALB 并从后端获得服务。

User -> Internet -> ALB -> Backend

使用 CloudFront 向通信流添加了另一个步骤(在“第一个”请求上)。

User -> Internet -> CloudFront edge location -> ALB -> Backend

当您在地理上(或网络路径方面)接近实际原点 (ALB) 时,这可能会使初始请求变慢。

了解这一点后,CloudFront 可能听起来像是一项无用的服务,但实际上它有不同的用途。它在这些边缘位置缓存信息,并能够从那里向用户提供内容。 由于世界各地分布着数百个边缘位置,其中之一很可能离您的最终用户更近,如果数据缓存在那里,请求就不必返回您的 ALB。

这使得它对全球分布的用户群很有用,它还有另一个好处:后端负载减少,因为静态内容缓存在 CloudFront 中,您可以使用它们昂贵的计算资源来做...嗯...计算。

根据您从何处进行测量,CloudFront 可能有益也可能无益,但这不一定与任何个人用户的速度有关,而是与普通用户的速度有关,并与减少昂贵的后端资源的负载有关。