新しい投稿が追加されたときに、キャッシュされたカテゴリページ(1ページ、ページなど)を無効にしますか?

StackOverflow https://stackoverflow.com/questions/3711525

質問

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

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

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

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

解決策は何ですか?

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

ありがとうございました

役に立ちましたか?

解決

投稿の数は良い解決策ではありません。これは、投稿を編集するときにもキャッシュを更新することをお勧めします。

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

  • 変更が参照として行われた時間を使用してください。

新しい投稿が追加されたら(削除、編集) - 現在のタイムスタンプをカテゴリに保存します。 cache_threshold. 。ページが要求されたら - このページがキャッシュされたときに確認してください。しきい値よりも古い場合 - ページを再生する必要があります。

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top