1

Newbish AWS 问题:我们的 Rails 应用程序目前允许通过Carrierwave将图像上传到S3存储桶。事情进展顺利......但它开始变得有点混乱(和繁琐),因为一些原始文件在一个存储桶中(上传的照片),而另一些在另一个存储桶中(网站徽标等),而其他文件(javascript & css)直接从 Rails 主机提供。

我们正在寻找Cloud Front帮助巩固和简化我们的交付……但我们都没有任何先前的经验。一旦正确配置(使用自定义来源),我们可以/应该期望将所有资产带回我们的本地服务器,然后“简单地”依赖 Cloud Front 进行交付吗?这意味着将所有上传的图像(目前在 S3 上)返回到本地 Rails 服务器,而不是使用带有 Fog gem 的 Carrierwave 来上传它们,我们只是在本地文件系统上处理和存储文件。这将有很多优势,其中最主要的是我们将在我们的主机上本地拥有整个应用程序的完整副本,包括所有资产。

此外,我们是否可以预期在上传新图像后会出现延迟......除了目前在处理上传图像后通过 Fog 上传到 S3 后会出现轻微延迟的情况吗?

最后,是否/是否有任何理由让我们的 S3 存储桶保持活力?我知道“未使用”的资产已从 CloudFront 中清除,但对我来说,无论如何都不清楚什么指标定义了“未使用”。

这是一个常见的用例吗?主要只是寻找验证或告诉你。

谢谢!

4

3 回答 3

1

至于使用 cloudfront 的carrierwave s3,我写了一篇关于如何做到这一点的博客文章。(如果您已经有 s3 工作,那么让云端部分工作非常容易)http://jeffdickey.info/using-carrierwave-on-heroku-for-image-uploading-w-cloudfront

在 js/css 资产说明中,如果您使用的是 rails 3.1 资产管道,您需要做的就是进入您的 production.rb 文件并将您的资产主机设置为指向 rails 服务器的云端 cdn。

我喜欢将 content.domain.com 和 assets.domain.com 用于这 2 个 cdn。

无需将您的 js/css 资产上传到 S3,然后从 CloudFront 提供它们,直接提供它们即可。CloudFront 将为您处理缓存。

于 2011-11-26T06:03:47.407 回答
0

两个建议:

1) 使用jammitjammit-s3管理您的资产并将其交付到云端。在开发中,您的资产位于本地文件系统上,但在部署时您推送到云端。s3 gem 足够聪明,可以检查哪些文件已更改等。我不确定这将如何受到 rails 3.1 的影响,但它在 3.0 上对我来说效果很好。

2) 使用cloudflare。这项服务非常令人兴奋,除了安全优势之外,它还可以缓存您的静态资产并使用他们自己的 CDN 交付它们。令人惊讶的是,有一项免费服务几乎可以满足我们大多数人的需求,尽管我不知道您的应用程序的要求。强烈建议您检查一下。

于 2011-09-13T19:25:04.360 回答
0

关于将上传的图像带回您的服务器,请记住以下几点:

  • 您可能会为多个云端边缘位置(目前大约 20 个)付费,而不是为一个存储桶中的存储付费。另一方面,您只需为实际使用的文件和用户所在的位置付费,因此差异取决于文件的使用方式。
  • 如果文件被更改,您需要更改其名称,否则您的用户可能看不到更改,也许您已经通过为上传提供唯一名称来解决此问题。

服务没有明显延迟,如果 egde 位置缺少文件,Cloudfront 将简单地从您的服务器获取文件,转发并存储它以备下次访问时使用。因此,如果文件被清除,这并不重要,因为 Cloudfront 会在需要时再次获取它。

至于您的其他文件,由于您将 Rails 3.1 与资产管道一起使用,因此非常容易。我在这里记录了我的设置:

http://blog.ertesvag.no/post/10720082458

于 2011-10-05T06:52:57.093 回答