是否有用例更适合Amazon cloudfront而不是s3,或者相反?我试着通过例子来理解两者之间的区别。


当前回答

Amazon S3专为在特定地理区域内存储大容量、低成本文件而设计。存储和带宽成本相当低。

Amazon CloudFront是一个内容分发网络(CDN),它在尽可能靠近用户的边缘位置代理和缓存web数据。

当最终用户使用此域名请求对象时,他们将自动路由到最近的边缘位置,以高性能地交付您的内容。(亚马逊)

CloudFront提供的数据可能来自S3,也可能不是。由于它对传输速度进行了优化,因此带宽成本略高。

如果您的用户基础是本地化的,那么使用S3或CloudFront不会有太大区别(但是您必须为S3桶选择正确的位置:US、EU、APAC)。如果您的用户群分布在全球,并且速度很重要,CloudFront可能是一个更好的选择。

S3和CloudFront都允许使用域别名,但是CloudFront允许使用多个别名,这样d1.mystatics.com、d2.mystatics.com和d3.mystatics.com都可以指向同一个位置,从而增加了并行下载的容量(这过去是谷歌推荐的,但随着SPDY和HTTP/2的引入,重要性就不那么重要了)。

CloudFront在2014年也支持CORS(感谢sergiopantoja)。

*注意:从2015年开始,S3现在可以自动复制到其他区域。

其他回答

Amazon S3专为在特定地理区域内存储大容量、低成本文件而设计。存储和带宽成本相当低。

Amazon CloudFront是一个内容分发网络(CDN),它在尽可能靠近用户的边缘位置代理和缓存web数据。

当最终用户使用此域名请求对象时,他们将自动路由到最近的边缘位置,以高性能地交付您的内容。(亚马逊)

CloudFront提供的数据可能来自S3,也可能不是。由于它对传输速度进行了优化,因此带宽成本略高。

如果您的用户基础是本地化的,那么使用S3或CloudFront不会有太大区别(但是您必须为S3桶选择正确的位置:US、EU、APAC)。如果您的用户群分布在全球,并且速度很重要,CloudFront可能是一个更好的选择。

S3和CloudFront都允许使用域别名,但是CloudFront允许使用多个别名,这样d1.mystatics.com、d2.mystatics.com和d3.mystatics.com都可以指向同一个位置,从而增加了并行下载的容量(这过去是谷歌推荐的,但随着SPDY和HTTP/2的引入,重要性就不那么重要了)。

CloudFront在2014年也支持CORS(感谢sergiopantoja)。

*注意:从2015年开始,S3现在可以自动复制到其他区域。

CloudFront和S3 Bucket是不一样的。通俗地说:CloudFront使您能够通过边缘位置的内容交付网络(CDN)加速web内容的内容交付,而S3桶是您存储实际文件的地方。CloudFront的源代码不一定来自S3,但为了更容易地可视化S3与CloudFront的集成:

Amazon CLOUDFRONT和S3是Amazon Web services提供的两个不同的服务。

Amazon S3是一个存储服务,我们可以在其中存储静态文件,例如:

Css,图片,javascript,视频等等…

CloudFront是一个中间件,它位于用户从AWS请求文件和特定区域的S3数据中心之间,CloudFront用于加快从S3向用户分发静态和动态web内容的速度。

你可以通过一个例子更好地理解它:-

例如,您的S3位于AWS区域美国东部(弗吉尼亚州北部),该数据中心位置用于存储您的文件。

如果来自印度的用户试图从弗吉尼亚州的AWS服务器访问一个文件,那么用户将需要通过请求访问该特定位置,这将花费大量时间。

CloudFront所做的是充当用户和AWS S3之间的中间件。


最常用的文件可以缓存在CloudFront上,它所做的是,它在边缘位置复制这些文件(为了以较低的延迟将内容交付给最终用户,Amazon CloudFront使用一个全球边缘位置网络进行内容交付)。

如果内容已经位于延迟最低的边缘位置,CloudFront将立即交付。如果内容当前不在该边缘位置,CloudFront将从Amazon S3桶中检索它,并尽可能快地将其提供给用户。

从CloudFront到S3的每个请求都被赋予一个新的DNS,因此这将导致更低的流量以及更多的并行请求处理。

以下是截至2016年7月的当前边缘位置列表:-

美国

阿什本,弗吉尼亚州(3) 亚特兰大,乔治亚州 芝加哥, 达拉斯/沃斯堡,德克萨斯州(2) 海沃德, 佛罗里达州杰克逊维尔 加州洛杉矶(2) 佛罗里达州迈阿密, 纽约,纽约州(3) 新泽西纽瓦克 帕洛阿尔托,加州 圣何塞,加利福尼亚州 西雅图,华盛顿州 印第安纳州南本德 密苏里州圣路易斯

欧洲

荷兰阿姆斯特丹(2) 爱尔兰都柏林 德国法兰克福(3) 英国伦敦(3) 马德里,西班牙 法国马赛的 米兰,意大利 法国巴黎(2) 斯德哥尔摩,瑞典 波兰华沙

亚洲

金奈,印度 香港(二) 印度孟买 菲律宾马尼拉 印度新德里 日本大阪 韩国首尔(3) 新加坡(2) 台北,台湾 日本东京(2)

澳大利亚

澳大利亚墨尔本 澳大利亚悉尼

南美

圣保罗,巴西 里约热内卢de Janeiro,巴西

由此你可以得出结论,如果受限的用户来自于你的S3所在的同一地区,那么你不需要使用CloudFront,如果用户数量在全球范围内增加了,那么你肯定应该使用CloudFront来获得更好的延迟和流量控制。

首先,我想解释一下,Amazon S3是云存储,云前端是内容交付网络(CDN)。

因此,您可以用来在S3上存储文件,并可以创建分发以通过internet提供内容。此外,您还可以为特定区域创建分布。

另一个主要区别是CloudFront允许您在服务器上镜像站点。然后Cloudfront使用其内容传输网络缓存图像、mp3或视频等文件。

这使您不必像使用Amazon S3时那样复制资产。

但是,在文件过期后,CloudFront将从您的活动站点再次获取它(以成本为代价)。因此,云前端最适合访问频繁的文件,而不太适合访问不频繁的文件。

为apache设置文件过期的一种方法是在.htaccess中。例如

<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>