0

、およびCDNでアセット ホスティングが機能しています。しかし、動的に (を使用して)生成された画像を除外し、ブラウザがそのような画像のアプリ URL に直接アクセスできるようにしたいと考えています。jscssstatic imagessend_fileCDN

つまり、http://www.myapp.com/user_photos/2/images/5にアクセスします。

ただし、send_file URL はhttp://cdn.myapp.com/user_photo/2/images/5として出力されます。

その理由は、画像 #view が存在するコントローラーに承認が必要であり、何らかの理由で Cookie がアプリ サーバーに戻っていないためです。そのため、動的に生成されたイメージの中継として途中で使用したい場合でも、CDNコントローラーの承認に失敗します (認証に cancan/devise を使用)

production.rb には次のものがあります。

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

搬送波構成で次のことを試しましたが、機能しませんでした。

config.asset_host = "http://www.myapp.com/"

CDN による除外から特定のルートを除外する方法について何か考えはありますか?

4

1 に答える 1

0

production.rb解決策は、URL パターンに基づいて asset_host を設定するファイルに条件を設定することです。私の場合、user_photos 内のすべてのものを、他のすべての静的アセットとは異なるアセット ホストから提供したいと考えました。

config.action_controller.asset_host = Proc.new { |source|
  case source
  when /\/user_photos\//
    APP_CONFIG['dynamic_photos_root_url']
  else
    APP_CONFIG['asset_cdn']
end
}

搬送波構成の変更は何もしなかったので、それらを削除することになりました。

CDN は Amazon のクラウドフロントであり、すべての Cookie を通過するように CDN の動作を設定しても、理解できない Cookie でファンキーなことを行います。

次の議論は、解決策を理解する上で重要でした: Rails 3 で動的 assets_host を構成する

Amazon クラウドフロントがこの画像をキャッシュし、同じユーザーによる後続のヒットで、Cookie をオリジンに渡し、認証を取得してから、同じキャッシュされた画像をブラウザに提供する場所で機能させる方法があるかどうか疑問に思います。

于 2013-08-01T17:57:45.533 に答える