【问题标题】:Using multiple subdomains on Rails config.action_controller.asset_host在 Rails config.action_controller.asset_host 上使用多个子域
【发布时间】:2014-04-11 04:50:41
【问题描述】:

我已经使用 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"]

但是没有用。

【问题讨论】:

    标签: ruby-on-rails cdn assets


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这不会影响缓存吗?例如,如果 application.css 包含使用 cdn1 域呈现,它以后是否可以使用 cdn2 域呈现?还是 Rails 每次都从同一主机提供相同的资产?
    • @eirikir 每个资产的主机相同。见api.rubyonrails.org/classes/ActionView/Helpers/…host = host % (Zlib.crc32(source) % 4)
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2011-07-05
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多