私たちの Ruby on Rails プロジェクトでは、調理方法、機会など、レシピの分類基準が多数あります。すべてのレシピは、これらのカテゴリの 1 つまたは複数に属しています。誰かがレシピの閲覧を開始すると、特定のカテゴリのセットに絞り込むことができます。次に、このセットからアクセスできるすべてのカテゴリのレシピの数を計算する必要があります (「アクセス可能」とは、選択したカテゴリにも属するそのカテゴリにレシピがあることを意味します)。これは、Amazon の検索の仕組みと似ています。誰かが「ソフトウェア」と入力すると、左側に「本 (200)」、「映画 (300)」などのメニューが表示されるので、ユーザーはこれらのリンクをクリックすることでさらに深く掘り下げることができます。
現在、大まかに次のように実装しています。
- URL から選択したカテゴリのセットを作成します。
- 現在選択されている基準に該当するすべてのレシピからカテゴリ ID を取得するクエリを実行します。
- すべてのカテゴリ ID をレシピのカウントにマップするインデックスを構築し、ゼロ以外のカウンターを持つものだけをレンダリングします。
- このインデックスは memcached に 24 時間保存されるため、特定のページについて 1 日に 1 回だけ計算されます。
私の懸念は、キャッシュ ミスがあると、インデックスの構築に時間がかかることです。この問題を解決する方法、または現在のソリューションを改善する方法について何か提案はありますか?