在Rails上使用多个子域config.action_controller.asset_host

时间:2014-03-07 20:43:13

标签: ruby-on-rails cdn assets

我使用Cloudfront为我的Rails 3应用设置了CDN。我创建了4个CNAME重定向(cdn1.mywebsite.com,cdn2.mywebasite.com等),因此我可以并行化静态资源下载。

是否可以将rails配置为使用多个资产主机?

我试过

  

config.action_controller.asset_host = [“http://cdn1.mywebasite.com”,“http://cdn2.mywebasite.com”,“http://cdn3.mywebasite.com”,“http://cdn4.mywebasite.com”]

但它不起作用。

1 个答案:

答案 0 :(得分:9)

请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html

  

浏览器通常最多打开两个与a的连接   单个主机,这意味着您的资产通常必须等待其他   资产完成下载。您可以使用%d来缓解此问题   asset_host中的通配符。例如,“assets%d.example.com”。如果   存在通配符Rails在其中分发资产请求   相应的四个主机“assets0.example.com”,...,   “assets3.example.com”。有了这个技巧,浏览器将打开八个   同时连接而不是两个。

您需要稍微调整DNS以从0开始计数,然后执行:

config.action_controller.asset_host = 'http://cdn%d.mywebasite.com'