2012-03-14 9 views
1

37シグナル(here)の中から記事How Basecamp Next got to be so damn fast without using much client-side UIが見つかりましたが、キャッシュ無効化の仕組みを理解できませんでした。キャッシュとすべての参照の無効化

letが言う:

私はこのようなアレイ状にpostオブジェクトを持っている:post-3232

$post = array(
    'id' => 3232, 
    'title' => 'Test Post' 
) 

I'amは、名前付きキャッシュキーでキャッシュに保存します。私はキャッシュキーとキャッシュにこのリストを保存してい

$latest = array(
    array(
     'id' => 3232, 
     'title' => 'Test Post' 
    ), 
    array(
     'id' => 3233, 
     'title' => 'Test Post 1' 
    ), 
    array(
     'id' => 3234, 
     'title' => 'Test Post 2' 
    ) 
) 

latest-posts-140320121947

ポストのいずれかが、削除変更された場合は私の最新記事の一覧は知っていることができますどのように

、私はこのようなlatest posts配列を持っています新しい投稿が挿入されていますか? 私は記事からそれを理解することはできません。多分私はStackOverflowからいくつかの助けを見つけることができます。コメントパー

+0

PHPを使用している場合、@cnkt、symfonyを試してください。これは、バージョン1.0から数年前からネストされたキャッシングがありました。 (キャッシュの可視性を有効にすることは素晴らしいことです。つまり、37個のSignalsピクチャのように、キャッシュされたブロックごとにリアルタイムのキャッシュモニタを見ることになります)。 Symfony 2を試したことはありません。1.3が私のニーズに合っているからです。しかし、この機能もあります。 – halfer

+1

Symfonyはこれをやっているかもしれませんが、私はこの実装の背後にあるロジックを学びたいので、 "自分のコードでどうすればいいのか"を知る必要があります。 – cnkt

+0

賞金をいただきありがとうございます。関連するQをお持ちの場合は、ここに投稿してください。おそらくネストされたキャッシュフラグメントのsymfony 1.x実装にリンクすることができます。 – halfer

答えて

0

どのような投稿が削除、変更、または新しい投稿が挿入されているか知ることができますか?

簡単な言葉で言えば、キャッシングの問題は意図的に古いデータを提供していることです。もちろん、それは大丈夫です。

ただし、一部のキャッシュを無効にすることができます。したがって、1つの投稿を書き直す場合は、その投稿のキャッシュを無効にして、次回の閲覧時に新しいデータで再キャッシュするようにする必要があります。このような単一項目は簡単です。

しかし、大量のデータが含まれているキャッシュ(たとえば、最新の投稿のように、1ページあたり1つのキャッシュ項目)がキャッシュされていると、あまりにも扱いにくい/遅いその中の単一の表の行。もしそうなら、キャッシュされていないこの画面を提供するほうが良いでしょう。しかし、最近の投稿に最後の10個の項目が含まれている場合は、その全体のキャッシュを無効にして、それを再描画します。

このページのキャッシュコピーには、各テーブル行(つまり、より大きなキャッシュテーブルの複数のキャッシュされた行)のキャッシュアイテムが含まれていることがあります。ただし、キャッシュ領域が小さければ小さいほど、メリットが少なくなります。しかし、それは確かに1つの行だけを無効にする方が簡単になります。

0

桜庭は、それがアクティブレコードに裏打ちされています。 belongs_to :project, touch: trueは、todolistが更新されると、プロジェクトのupdated_atが自動的に更新されることを意味します。

この種の依存システムは、独自の設定で実装する必要があります。

+0

私はアクティブレコードパターンを使用していません。また、親子関係船のように関連していない投稿と「最新投稿一覧」もあります。 – cnkt

+0

あなたはアクティブレコードを使用していないことを知っています。したがって、「実装する必要があります。投稿リストには、確かに個々の投稿との関係が「たくさんある」ことがあります。これはあなたのために魔法のように起こるものではなく、あなたは論理を設定する必要があります。 – ceejayoz

+0

この動作を実装する方法について、読んだりコードを教えてもらえますか? – cnkt

関連する問題