首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化AWS S3桶的下载速度?

如何优化AWS S3桶的下载速度?
EN

Stack Overflow用户
提问于 2019-11-05 07:12:46
回答 1查看 3.5K关注 0票数 0

我们在S3区域的AWS存储桶上保留了特定于用户的可下载文件。我们的客户从世界各地的这些桶里下载文件。文件大小范围从1-20 GB。对于较大的文件,非美国位置的客户端将面临下载速度慢或下载中断的抱怨.我们如何优化这些下载?

我们正在考虑以下办法:

  1. 加速下载(费用增加)
  2. 使用带有CloudFront源文件的S3 CDN (因为我们的下载文件是不同的,每个文件只下载一次或两次,CDN会有帮助,因为它将第一次只从美国桶中获取数据)
  3. 使用akamai作为CDN (与CloudFront一样,我们与akamai在组织级别上有更好的价格交易)
  4. 根据用户的位置(我们知道下载的地点),我们可以将文件保存在在aws区域创建的特定桶中。

所以,我想要cost+download速度方面的建议。哪一个可能是进一步探索的更好的选择?

EN

回答 1

Stack Overflow用户

发布于 2019-11-05 08:30:11

由于每个文件只能下载几次,所以您将无法从CloudFront的缓存中获益,因为下载请求全部访问同一个CloudFront节点并且该节点尚未将文件从缓存中清除的可能性可能接近于零,特别是对于如此大的文件。

另一方面,您可以通过使用CloudFront或S3传递加速度获得其他东西(后者与第一个没有缓存的请求本质上是相同的):请求已经进入AWS的网络边缘,因此您可以避免使用拥挤的网络,从用户的位置到S3桶的位置,这通常是下载缓慢和中断的主要原因。

根据用户位置来存储数据也会改善情况,尽管CloudFront边缘位置通常比S3的下一个AWS区域更接近用户。不根据用户位置将文件分发到不同的S3存储桶的另一个原因是管理开销:您需要管理多个S3存储桶,将每个文件存储在正确的桶中,并将每个用户指向正确的桶。虽然可以通过使用S3复制来简化存储(您可以使用过滤器将对象复制到特定的目标桶中,这意味着这个桶),但是为多个客户管理多个端点的开销仍然存在。另外,当您声明您知道客户的位置时,如果客户确实更改了其位置并突然想下载一个现在存储在世界另一边的对象,会发生什么?你又会有同样的问题。

在您的情况下,我可能会选择选项2并在CloudFront前面设置S3。我更喜欢CloudFront而不是S3传输加速,因为它提供了更多的灵活性:您可以在HTTPS中使用您自己的域,稍后您可以在文件位置发生变化时重新配置源文件,等等。根据您想要的范围,您甚至可以将它与S3复制结合起来,并为您的CloudFront发行版提供多个来源,以便将对不同文件的请求定向到不同区域的S3桶。

选择哪种解决方案取决于您的用例和约束。对您来说,一个约束似乎是成本,另一个约束可能是由CloudFront支持的CloudFront,如果您有要分发更大的文件的话。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58706191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档