2011-02-05 1 views
2

私のウェブサイトには、5分間キャッシュするデータベース集中型のページがあります。しかし、キャッシュの有効期限が切れ、ページを新しくレンダリングする必要がある場合でも、パフォーマンスは低下します。私はなぜバックグラウンド・プロセス(ワーク・リングのような)からページを5分で1回計算し、それをキャッシュに保管し、毎回キャッシュからユーザー要求を要求させるのかと考えていました。その結果、ユーザーはこのページがレンダリングされるのを待つ必要はありません。データベースインテンシブなページをレールのバックグラウンドプロセスからキャッシュに保存する方法

効率的な方法はありますか? 何か助けを非常に感謝します。

おかげで、

答えて

1

は、私はあなたのバックグラウンド・ジョブまたはcronジョブからページのためのウェブ・サーバーへの呼び出しを行うだけで推薦します。それから、Railsのスタック全体が呼び出しを処理できるようにします。あなたはそれが例えば、キャッシュの更新を強制するには、このごとに4-5分を行うと、ページにパラメータを渡すためにcronジョブを作成することができます。

 
complex/page?force=true 

お使いのコントローラ/アクション/モデルが、その後のチェックでしょうこのパラメータの存在。 forceが存在する場合、ページはキャッシュされたバージョンを使用せず、代わりにキャッシュを再作成します。

+0

あなたがこの質問もansできる場合は、参考になります。 http://stackoverflow.com/questions/5409824/how-to-write-a-partial-into-a-cache-from-a-back-ground-process-and-read-the-parti – anusuya

+0

background/cronジョブから "complex/page?force = true"というページのWebサーバーを呼び出す方法のコード例? – RailsTweeter

+0

これを可能にする多くのHTTPライブラリがあります。 Rubyには 'Net :: HTTP'ライブラリが組み込まれていますが、' curl'のようなコマンドラインツールを使うこともできます。より詳細な回答が必要な場合は、別の質問を投稿することをお勧めします。 –

関連する問題