6

在我的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/

4

2 回答 2

4

生产.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 等服务将你的东西托管在云上,我认为你的可用性很好,你不应该担心这个问题。这种方法几乎完全否定了缓存资产的好处。

于 2012-08-27T10:48:43.427 回答
0

您可以探索以下指令

ActionController::Base.asset_host = Proc.new { |source, request|
  if #code to check if CDN is alive
    "CDN Url"
  else
    "/public/assets/"
  end
}
于 2012-08-21T19:42:12.870 回答