amazon-web-services - 为什么具有 ALB 自定义源的 CloudFront 分配比没有 CloudFront 的 ALB 慢?
问题描述
我创建了一个 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 可能有益或无益,但这不一定与任何个人用户的速度有关,而是普通用户的速度以及减少昂贵后端资源的负载。
推荐阅读
- android - 随着时间的推移重复使用 startService() 将命令发送到已启动的服务
- reactjs - 点击事件中的多个道具
- node.js - Node.js : 表达路由,从数据库中查询数据并在 template.hbs 视图中渲染
- ruby-on-rails - Rails 在生产中编辑 gem
- java - AWS Lambda 中的 S3 客户端初始化缓慢
- html - 页面部分中心需要徽标,不包括方形空间中的左侧边栏
- assembly - 加法大于 15 时 x86 程序集错误中的解压缩十进制格式
- ios - 定时器循环 - 不是 NSTimer - Swift
- windows - windows server 2016如何创建子域
- python - 如何编写适用于 Python 2 和 Python 3 的代码?