2

ページの読み込み時間を改善するために、nginx の背後で実行されている Rails アプリ用に複数のクラウドフロント エンドポイントを設定することをいじくり回しています。基本的には、正常に動作しているように見える前に単一のエンドポイントをセットアップしていましたが、asset_host の次の宣言を使用して 2 番目のエンドポイントを追加すると、次のようになります。

config.action_controller.asset_host = Proc.new do |source|
    hosts = ["https://url1.cloudfront.net", "https://url2.cloudfront.net"]
    hosts[source.hash % 2]
end

(かなりバニラの capistrano デプロイ スクリプトを使用して) デプロイするたびに、一部のアセットが読み込まれません。クラウドフロントが nginx 404 ページをキャッシュしています。クラウドフロントのキャッシュを無効にすると、アセットはすべて正常に読み込まれます。

capistrano スクリプト自体は、Unicorn を再起動する前にコンパイルを実行するため、新しいアセット ファイル名への参照を含む html が提供されることはありませんが、クラウドフロントはデプロイ直後に 404 をキャッシュしています。

展開のたびにクラウドフロントのキャッシュを無効にすることはできません。これには時間がかかりすぎます。誰かがこの問題に遭遇しましたか? これを回避する方法について何か提案はありますか?

4

1 に答える 1