1

カテゴリ のブログがあるとしますA。カテゴリAには現在、100 ページで 1000 件の投稿があります。すべてのページはファイルにキャッシュされます (たとえば、Smarty テンプレート エンジンによってキャッシュされます)。投稿を追加していて、すぐに最初のページに表示したい。そのため、カテゴリ A の 100 ページすべてのキャッシュをクリアまたは無効にする必要があります。

ファイルが多すぎる (たとえば、数千ページ) 可能性があるため、キャッシュされたページを削除することはお勧めできません。リクエストに応じてキャッシュを無効にしてページを再生成する方がはるかに効率的な方法だと思います。

私の唯一の考えは、number of posts in categoryキャッシュIDに追加することです。したがって、最初にカテゴリ内の投稿数を取得し (たとえば、memcache から)、この数によってキャッシュされたバージョンが有効かどうかを確認する必要があります。

すべてがうまくシンプルに見えます。しかし、新しい投稿を追加し、1 分後に別の (古い) 投稿を削除する状況を想像してみましょう。投稿数は 1000 のままで、一部のカテゴリ ページは古いままになります (この 1 分間に閲覧されなかった場合)。

解決策は何ですか?

PS: 私の英語で申し訳ありませんが、私の質問は、すでにそのような問題に直面している人々から明確になると思います.

ありがとうございました

4

1 に答える 1

0

投稿を編集するときにキャッシュも更新する必要があるため、投稿の数は良い解決策ではありません。

私が考えることができるいくつかの戦略:

  • 変更時の目安としてご利用ください。

新しい投稿が追加されたとき (削除、編集) - 現在のタイムスタンプをカテゴリに保存し、それを呼び出しましょうcache_threshold。ページがリクエストされたとき - このページがいつキャッシュされたかを確認します。しきい値より古い場合は、ページを再生成する必要があります。

  • ページ キャッシュではなくオブジェクト キャッシュに切り替えます。

ページ全体をキャッシュする代わりに、個々の投稿をキャッシュできます。新しい投稿が追加 (削除、編集) された場合、時間がかからないため、すぐにキャッシュを再生成します。ページを表示するには、必要な量のキャッシュされた投稿を取得して表示するだけです。

このソリューションにはより多くの作業が必要ですが、より柔軟で効果的です。

于 2010-09-15T15:26:26.373 に答える