ruby-on-rails - 将 S3/CloudFront 与 Rails 3 Assets 和更少的 CSS 结合使用

标签 ruby-on-rails amazon-s3 assets asset-management amazon-cloudfront

这个是满口的!基本上,我试图将我所有的 Rails 3 Assets 发送到 S3 云,并使用 CloudFront 作为 CDN 来交付所有内容。我已经了解了如何配置 Rails 以在生产模式下从 Assets 服务器中提取数据。我遇到的问题是找到一种好方法来自动打包并将所有内容从 rake 命令或 rails gem 发送到云。我遇到的另一个问题是,我不知道将 Less CSS 与 More gem 一起使用是否会搞砸。 More 从另一个目录生成一个 CSS 文件并将其放在 public/stylesheets 中。非常感谢任何想法或建议!谢谢:)

最佳答案

如果您要推送到 Heroku 并使用 Rails 3.1 Assets ,那么您就已经准备就绪了。

在亚马逊的 CloudFront 配置中创建您的分配并将源设置为您的应用程序 URL。

然后在你的 production.rb 文件中添加:

config.action_controller.asset_host = "xxxxxxxxx.cloudfront.net"

主机是您的 CloudFront 分配的主机。

然后,当您部署时,请确保您在 Cedar 堆栈中并且正在编译 Assets 。这会将唯一的 MD5 添加到文件名中。当向您的 CDN 发出请求时(由您的 production.rb 文件中的设置自动处理),CDN 将提供它的文件版本或首先从源中提取它。这意味着您不必将文件推送到 CDN,它们会自动拉入。

如果您的文件由于某种原因没有唯一名称,那么您将需要了解如何使 CloudFront 中的缓存失效,但除此之外它非常简单。

关于ruby-on-rails - 将 S3/CloudFront 与 Rails 3 Assets 和更少的 CSS 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158111/

相关文章:

ruby-on-rails - Rails.env 在测试中返回 'development' 导致设计真实性 token 破坏测试?

node.js - 从 Amazon S3 存储中删除图像

css - 从公共(public) Assets 下的 css 文件导入另一个 css 文件不适用于 play 2.0.4

flutter - 使用Image.network无法从互联网上显示图像

ruby-on-rails - 在 Rails 中访问关联

ruby-on-rails - 无法连接到 docker 中的 postgres

go - 在golang中将多部分文件转换为图像对象

c# - 从在已分配 IAM 角色的 Amazon EC2 实例上运行的 C# .NET 应用程序为联合用户创建 STS token

xamarin - 如何使用 VS 和 Monodroid 读取 Assets 文件

ruby-on-rails - C/Ruby 接口(interface)的最佳选择