仅使用Rails从CloudFront服务图像资产

lem*_*ger 1 ruby-on-rails cdn asset-pipeline amazon-cloudfront

我最近改用CloudFront作为CDN,使用简单的服务

config.action_controller.asset_host = "url of your cloudfront distribution" 在我的配置文件中。

一切运行良好,CF吸收了它还不够好的资产,为它们提供了很好的服务,比使用资产管道更快。

但是,由于多种原因,从CF而非我们自己的服务器提供服务时,我们的某些JS会中断。因此,我正在寻找一种仅将CF用于图像(或图像/ css)资产的方法,并且仍然直接从我们自己的服务器提供已编译的application.js文件。

有任何想法吗?

Ale*_*exT 5

Rails允许您设置config.action_controller.asset_host为proc。这样,您可以根据自己的需要对资产宿主的选择进行控制。例如:

config.action_controller.asset_host =  Proc.new { |source|
  if source.ends_with?('.jpg')
    "http://cdn.example.com"
  else
    nil
  end
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见api文档