使用AWS处理Rails中资产的最佳方法

时间:2016-02-18 18:03:05

标签: ruby-on-rails amazon-web-services

我使用AWS和Cloudfront来为我的资产提供服务。问题是,我的css和js文件存储在本地。图片和视频位于AWS Bucket上。

我即将重新开始这一切,因为我对rails非常陌生,所以我想知道处理这个问题的最佳方法是什么。

我环顾四周,发现了几个选择: - 创建特定的行为,以便我可以使用本地css和js以及AWS存储的图像 - 在AWS上载所有内容然后使用Cloudfront(我个人最喜欢的,对我来说似乎是最好的选择) - 其他选择?

如果有人使用AWS为RoR提供资产,您有何看法?你使用任何特定的宝石吗?

1 个答案:

答案 0 :(得分:0)

如果您将Cloudfront发行版的来源设置为生产轨道应用的网址,那么当浏览器请求时,Cloudfront将从中删除任何尚未缓存的文件。

在您的rails应用中,您应将资产主机设置为Cloudfront发行版的网址。这是一个例子:

# config/environments/production.rb
config.action_controller.asset_host = "<YOUR DISTRIBUTION SUBDOMAIN>.cloudfront.net"

这将告诉rails链接到资产,但是通过Cloudfront URL执行此操作。这意味着对于您拥有的每个资产,cloudfront将仅为每个版本请求一次。每当您发布更新时,新资产的网址都会有所不同,这会导致Cloudfront抓取它,因为它尚未缓存。

使用此方法可以防止每次部署时必须将文件同步到s3。