2

私は、36,000 の記事に対して 1 日あたり約 58,000 のヒットを受け取るニュース サイトを持っています。この 36,000 のユニークなストーリーのうち、30,000 は 1 ヒットしかなく (その大部分は検索エンジンのクローラー)、20 インプレッションを超えるストーリーは 250 だけです。なんでもキャッシュするのはメモリの無駄ですが、この250記事。

現在、データ キャッシングに MySQL Query Cache と xcache を使用しています。テーブルは 5 ~ 10 分ごとに更新されるため、クエリ キャッシュだけではあまり役に立ちません。頻繁にアクセスするページだけを検出してデータをキャッシュするにはどうすればよいですか?

4

2 に答える 2

4

最初に次の 2 つのオプションがあると思います。

  1. デフォルトでは何もキャッシュしません。

    Observer/Observable パターンを使用して、記事のビューがしきい値に達したときにイベントをトリガーし、ページのキャッシュを開始する方法を実装できます。

  2. 作成時にすべての記事をキャッシュします

どちらの場合も、cron を使用して、定義したしきい値に達していない記事をパージできます。

いずれにせよ、ヒューリスティックな方法を使用して、記事をキャッシュする必要があることを早期に判断する必要があります。また、他のヒューリスティックな方法と同様に、誤検知やその逆も発生します。

コンテンツがどのように読まれるかにもよりますが、記事がリアルタイムのニュースであれば、トラフィックがすぐに発生するため、おそらく効率的です。

これらの方法の主な問題は、最終アクセス日時や現在のページ ビューなどの追加情報を保存する必要があるため、余分なクエリが発生する可能性があることです。

于 2011-01-29T19:43:56.057 に答える
1

新しい記事(最近追加された記事など)のみをキャッシュできます。memcachedRedisを見てみることをお勧めします。どちらも非常に便利でシンプルであると同時に強力なキャッシングエンジンです。

于 2011-01-29T14:39:03.833 に答える