config.action_controller.asset_host 的条件配置



我有一个使用 CloudFront 来加速资产交付的 Rails 应用程序,一切都很好,很顺利,在 production.rb 下添加了这个。

config.action_controller.asset_host = "http://cdn.mydomain.com/"

但是,受限网络上的一堆客户端使用通过 Varnish 缓存来访问我的应用程序,并且无法解析 CDN 域。Varnish 添加了以下标头:

request.env["HTTP_X_VARNISH"]

我想做的基本上是仅在未设置此标头时使用 CDN(客户端不通过清漆)。

所以基本上是这样的

config.action_controller.asset_host = "http://cdn.mydomain.com/" unless request.env["HTTP_X_VARNISH"]

如何做到这一点?

蒂亚

asset_host可以是Proc

config.action_controller.asset_host = ->(source, request) do
  if request.env["HTTP_X_VARNISH"]
    "#{request.protocol}#{request.host_with_port}"
  else
    "http://cdn.mydomain.com/"
  end
end

最新更新