1

別のアプリケーションからの画像を表示する必要があるRails3アプリケーションがあります。これらの画像は時間の経過とともに変化するため、変化を確認するために1時間ごとに実行されるタスクがあります。パフォーマンス上の理由から、自分のアプリケーションから提供する画像(つまり、1つの画像と1つのcssファイル)を使用してスプライトを作成したいと思います。

理想的には、Sprocketsがこれらのファイルをアプリケーション内の他の画像やスタイルシートと同じように処理するようにしたいので、独自のミニファイ、gzip、キャッシングなどのソリューションをロールバックする必要はありません。

サーバーを停止してプリコンパイルし、サーバーを再起動する必要がないように、実行時にSprocketsにフックする方法はありますか?

4

1 に答える 1

0

スプロケットに引っ掛ける方法が見つかりませんでした。

好奇心旺盛な人のために、私はこの問題を次の方法で解決しました(ただし、パフォーマンスのわずかな向上は複雑さを正当化しないため、ミニファイ/ gzipの部分は省略しました)。

  1. 通常どおりスプライトファイルを作成します。
  2. イメージのmd5ハッシュ値を決定します。
  3. ファイル名の一部としてmd5ハッシュ値を使用して、新しいファイルをパブリックフォルダーにコピーします。
  4. クラスタ内のすべてのサーバーに新しいファイルを送信します。
  5. すべてのサーバーの構成変数を更新して、提供するファイルを確認します(例:MyApp :: Application.config.tool_icon_md5_key)。
  6. クラスタ内のすべてのサーバーから古いファイルを削除します。

クラスタリングは実際には最も難しい部分です。ここで重要なのは、1つのサーバーが新しいファイルを要求したが、その要求を処理するサーバーが実際にはまだそのファイルを持っていない場合を回避することです。

于 2012-06-28T20:27:13.420 に答える