我有一个Rails应用程序,它使用CloudFront来加速资产交付,一切都很顺利,在生产中添加了这个.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"]
如何实现这一目标?
TIA
答案 0 :(得分:2)
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