我的资产文件存储在哪里?

时间:2014-04-24 12:15:23

标签: heroku ruby-on-rails-4 amazon-s3 cdn amazon-cloudfront

正如我所读到的,Heroku建议将你的CDN直接指向你的dynos,而不是使用asset_sync,因此我这样做了:

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

我发布的来源是dcaclab.com 我的发行版的CNAME是assets.dcaclab.com

因此,在我成功将我的rails 4应用程序推送到heroku之后,我发现我的所有资产都来自我的cloudfront发行版,例如:

http://<MY DISTRIBUTION SUBDOMAIN>.cloudfront.net/assets/features/Multiple%20Circuits-edbfca60b3a74e6e57943dc72745a98c.jpg

我不明白,我的资产文件是如何上传到我的cloudfront发行版的?还有,哪里可以找到它们? 我以为它们会上传到我的s3水桶assets,但它只是空的。

有人可以开导一下吗?

2 个答案:

答案 0 :(得分:0)

如果我正确阅读the intro docs;您不一定在Cloudfront上看到它们,至少不在管理控制台之外。它们被缓存在边缘节点上,并且如果它们未被发现或过期则从您的Origin请求它们。他们按需“上传”;如果文件没有,则边缘从文件中请求文件。

答案 1 :(得分:0)

如果您的文件是从CloudFront分配中提供的,并且它们没有像您之前想象的那样从您的S3资源“资源”中提取,那么您可能已将CloudFront分配设置为使用自定义来源,例如您的Web服务器(S3桶是正常/标准的起源)。

如果您已将CloudFront分配设置为使用Web服务器作为源,则CloudFront将从您的Web服务器提取文件,然后在不同的边缘位置缓存它们(当用户使用时,CloudFront会自动完成提取和缓存)通过“distributionname.cloudfront.net”域访问资源。

顺便说一句,只是旁注,我跑了“dig assets.dcaclab.com”,解析为“assets.dcaclab.com.s3.amazonaws.com”。