是否有用例更适合Amazon cloudfront而不是s3,或者相反?我试着通过例子来理解两者之间的区别。
当前回答
另一个主要区别是CloudFront允许您在服务器上镜像站点。然后Cloudfront使用其内容传输网络缓存图像、mp3或视频等文件。
这使您不必像使用Amazon S3时那样复制资产。
但是,在文件过期后,CloudFront将从您的活动站点再次获取它(以成本为代价)。因此,云前端最适合访问频繁的文件,而不太适合访问不频繁的文件。
为apache设置文件过期的一种方法是在.htaccess中。例如
<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>
其他回答
Amazon S3是一个简单的存储服务,可以使用大量的信息,如视频、图像、PDF等。
CloudFront是一个内容交付网络,它更接近最终用户,用于在尽可能短的时间内使Amazon S3上的信息可用。
一个示例用例是视频点播。
你把你的视频存储在一个地方。S3存储了所有预先录制的不同格式的视频。 你有全局用户案例 CloudFront用于将视频缓存到边缘位置。这可以用于将内容交付给最终用户。位置将根据最近的物理边缘位置自动拾取。目前大约有51个边缘位置。
在正确的用例中使用CloudFront的一些优点:
改进的延迟——更好的终端用户体验。 可能降低数据传输成本。由于数据不是每次都从特定AWS区域的同一个S3桶传输。
其他可能的用例:
在线直播 游戏 网站加速
另一个主要区别是CloudFront允许您在服务器上镜像站点。然后Cloudfront使用其内容传输网络缓存图像、mp3或视频等文件。
这使您不必像使用Amazon S3时那样复制资产。
但是,在文件过期后,CloudFront将从您的活动站点再次获取它(以成本为代价)。因此,云前端最适合访问频繁的文件,而不太适合访问不频繁的文件。
为apache设置文件过期的一种方法是在.htaccess中。例如
<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>
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现在可以自动复制到其他区域。
在S3上使用CloudFront的另一种情况是,您可以在CloudFront中使用SSL证书到自定义域,而在S3中则不能。一个很好的理由!
这里忽略的一个方面是:
在较高的使用级别上,Amazon Cloudfront还提供比Amazon S3更低的价格。
Cloudfront CDN用于跨地理分布的多个服务器分发内容 JS (CSS) 而s3更多的是每个用户使用较少的资源存储(用户图像,pdf)。
你可以从s3桶中提供Cloudfront资源,完全绕过你的web服务器。
(在web服务器预编译和存储图像和java脚本的情况下很有用。将它们存储在s3上意味着您的服务器内存占用减少)
例子:在Heroku Slugs上(编译的应用程序大小可以通过使用s3来减少,并将其包装为云前端CDN将提高吞吐量)
推荐文章
- 警告:未受保护的私钥文件!当尝试SSH到Amazon EC2实例时
- 使用boto3连接CloudFront时,如何选择AWS配置文件
- 在亚马逊云服务器上设置FTP
- 无法将图像推送到Amazon ECR -由于“没有基本的身份验证凭据”而失败
- 如何测试AWS命令行工具的凭据
- 将Keypair添加到现有的EC2实例中
- AWS S3:您试图访问的桶必须使用指定的端点寻址
- 你会因为EC2上的“停止”实例而被收费吗?
- 下载一个已经上传的Lambda函数
- S3 - Access-Control-Allow-Origin头
- 何时使用Amazon Cloudfront或S3
- 如何处理错误与boto3?
- 什么数据存储在亚马逊EC2实例的临时存储?
- boto3 client NoRegionError:只能在某些时候指定区域错误
- AWS ssh访问“权限被拒绝(publickey)”问题