我使用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”]
但它不起作用。
答案 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'