我应该让我的 cdn 来源从 s3 还是云端提取?

should I make my cdn origin to pull from s3 or cloudfront?

所以我开始使用maxcdn cdn服务, 现在我把我的 s3 存储桶端点作为原点,所以当 cdn 出现错误时,它将从 s3 中提取文件。

为此存储桶启用 CloudFront 并让 maxcdn 从 CloudFront 提取文件是否明智?所以它将是 "double cdn" 喜欢 maxcdn(miss?)->CloudFront(miss?)->s3

我的假设是否正确,因为如果 maxcdn 出现错误,它可能也会错过 CloudFront?

这似乎有点不寻常,但可能值得一试。

将 S3 与 CloudFront 配对的一个有时被忽视的好处是,即使请求导致缓存未命中(以及上传,如果相关),S3(或 EC2,AWS 内的任何源服务器)之间的流量) 并且 CloudFront 在亚马逊拥有和管理的 high-performance IP 网络上传输。

数据必须从 S3 传输到第三方 CDN,从 S3 到另一个 CDN 的请求边缘节点,运行 通过 CloudFront 的请求往往会导致流量花费更多全球亚马逊网络上的距离比直接向 S3 发出请求时可能有的距离要远。这应该可以减轻在 Internet 上远距离传输时所涉及的一些变化无常和变数,并且应该等同于 某种 性能优势,尽管它可能有些微妙且难以量化。很难推测。

中间的 CloudFront 还会更改您将为下载带宽支付的定价。如果您直接将远程 CDN 连接到源 S3,则您的 per-gigabyte AWS 传输带宽费用仅基于 S3 区域,并且该费用因区域而异——但您的存储桶仅在一个地区,该地区的费用将适用于所有传输。

但是 S3 和 CloudFront 之间的下载传输是免费的,因此您的下载带宽费用基于远程 CDN 用于获取内容的 CloudFront 边缘位置。此价格也因地区而异,您可以通过 CloudFront 定价 类 进一步控制 price/performance。在某些情况下,来自 CloudFront 的带宽费用低于直接访问 S3 的费用,但在其他情况下,它们会更高。

远程 CDN 上的缓存未命中是否可能与 CloudFront 上的缓存未命中相对应,这在很大程度上取决于站点访问者的全球分布,以及远程 CDN 边缘位置的数量、分布和路由,以及 MaxCDN 如何处理不受欢迎对象的驱逐(以及 CloudFront 如何处理)。 MaxCDN 的边缘位置似乎少于 CloudFront,因此 MaxCDN 缓存未命中与 CloudFront 缓存未命中同时出现的几率似乎相当高。

尽管如此,尝试它还是很容易的,您可以分析 CloudFront 统计数据和日志以确定它是如何交互的。