Rails 3 - 从资产服务器提供资产失败时是否存在任何后备?

时间:2012-08-17 17:22:26

标签: ruby-on-rails-3 asset-pipeline cdn fallback

production.rb我设置了这个:

# Enable serving of images, stylesheets, and JavaScripts from an asset server
  config.action_controller.asset_host = "http://myassets.com"

图片,js和样式表从我的CDN(资产服务器)

正常加载

但是如果有一天这个资产服务器失败怎么办?它会返回404?

因为在我的资产服务器(CDN)中,我配置了pull zone,所以内容仍然可以从/assets/..获得。

是否有任何后备或如何进行后备,以便当我的assets server失败或返回错误时,我的应用程序会从应用程序中的/assets/加载资源?

2 个答案:

答案 0 :(得分:4)

production.rb

config.action_controller.asset_host = Proc.new { |source, request, asset_path|
  if some_condition
    "http://myassets.com"
  else
    asset_path
  end
}

有关详细信息,请参阅AssetTagHelper

修改

我认为此预防措施不值得为您的应用程序额外加载/添加请求。如果您使用故障转移服务器构建大型应用程序以提供高可用性,那么资产将是您为该冗余所能容纳的另一件事。如果您通过AWS或Rackspace等服务在云端托管您的东西,我认为您的可用性很好,您不应该担心这个问题。这种方法几乎完全否定了缓存资产的好处。

答案 1 :(得分:0)

您可以浏览以下指令

ActionController::Base.asset_host = Proc.new { |source, request|
  if #code to check if CDN is alive
    "CDN Url"
  else
    "/public/assets/"
  end
}