過去に私がやったことは、Amazon S3とCloudFront CDNでPaperClipを使用して配信を高速化することです。PaperClipは、箱から出してすぐにS3ストレージを非常にうまくサポートします。S3 ストレージ構成オプションのドキュメントを参照してください。
- CloudFrontディストリビューションをセットアップして、画像リクエストをS3バケットに転送し、その他の静的アセットのリクエストをRuby on Railsアプリケーションに転送します(または、それらをS3にアップロードすることもできますが、この質問の範囲外です)。
- CloudFrontディストリビューションを指すように制御するドメイン(assets.example.comなど)のCNAME。
- PaperClip構成で、を設定し
s3_host_alias: assets.example.com
ます。これにより、CloudFrontディストリビューションホストを使用するために、保存された画像リソースへの生成されたURLが生成されます。
- Ruby on Rails構成で、次のことができます
config.action_controller.asset_host = http://assets.example.com
。Ruby on RailsアセットURLも、キャッシュ/高速配信のためにCloudFrontディストリビューションを使用します。
それはかなり大ざっぱですが、うまくいけば、いくつかの有用なリソースの方向性が示されます。もちろん、これは1つの解決策にすぎませんが、データベースで数十万の画像添付ファイルを処理している状況で私にとってうまくいった解決策です。
(あなたのケースのために必要または有用ではない可能性のある先進的なステップとして、あなたはまたのようなあなたのCloudFrontの配信のために複数のCNAMEを設定することができますassets0.example.com
し、assets1.example.com
両方クリップs3_host_alias
とaction_controller.asset_host
、あなたが確定的(に基づいてすることができますラムダを取ることができますアセット)ブラウザーが同じホストへの同時接続の最大数を制限するため、同じページに多数のホストをダウンロードする場合の並列化を向上させるために、異なるホストを使用するURLを生成します。)