修复Route 53 CNAME Alias使用Cloudfront缓慢响应时间

时间:2016-04-16 19:32:31

标签: performance amazon-s3 amazon-cloudfront amazon-route53

我刚刚设置了CloudFront分发版,以加快我网站的图片速度。我的图像存储在S3上。我在Route53中使用CNAME别名在我的CloudFront分配端点设置了自定义子域。

但是,在使用样本图像测试速度时,我发现了以下内容:

这3个网址指向同一张图片:

  • 第一个URL是来自S3的原始图像
  • 通过在Route53中设置的CNAME别名进行访问时,第二个URL是来自CloudFront分配的图像
  • 第三个URL是直接来自Cloudfront发行版的图像

使用来自达拉斯位置的Pingdom进行测试。我从其他地方得到了类似的结果。

来自S3的较慢加载时间非常有意义。图像未在边缘位置缓存。但是,仅仅通过在分发前使用CNAME几乎加倍的加载时间似乎太慢了。 我更喜欢使用CNAME而不是这个性能成本。

我在这里遗漏了什么吗?我到处都读到在大多数情况下额外的DNS CNAME查找可以忽略不计。

1 个答案:

答案 0 :(得分:4)

一旦查找CNAME及其目标的结果被任何给定的解析程序缓存,CNAME延迟就会消失在噪音中,但除非它是一个不跨越多个域的CNAME(例如foo.example.com. CNAME bar.example.com.)双查询时间总是不可避免的。

但是,您不需要Route 53的CNAME指向CloudFront分配。您可以使用A记录别名,它是Route 53的内部功能,以便查找在Route 53内部完成,而不是通过CNAME的外部引用完成。然后延迟就消失了,因为Route 53提供了内部数据库的答案。

在Route 53控制台中编辑现有RR ...将其从CNAME更改为A,然后将别名设置为是。然后从别名目标选择列表中选择CloudFront分配并保存记录。