4

django の Memcached とビューごとのキャッシュ メカニズムを@cache_page(timeout)デコレータで使用しています。

特定のビュー関数内で、キャッシュ全体をクリアしたいと考えています。試しcache.clear()てみcache._cache.flush_all()ましたが、どちらもキャッシュをフラッシュしていないようです。

これを行う他の方法はありますか、それとも間違っていますか?

編集:必要なキーを削除するだけではなく、キャッシュを完全にクリアすることはあまり良い考えではないことを認識しています。ただし、@cache_page(timeout) で装飾したビューのキーがわかりません。これらを知るにはどうすればよいですか? キーを取得したら、ただ cache.delete(key)? を実行します。

ありがとう!

4

1 に答える 1

1

キャッシュ全体をフラッシュするよりも良い方法があります。キャッシュのバージョン管理を参照してください:

キャッシュされた値を使用する実行中のコードを変更する場合、既存のキャッシュされた値を削除する必要がある場合があります。これを行う最も簡単な方法は、キャッシュ全体をフラッシュすることですが、有効で有用なキャッシュ値が失われる可能性があります。

Django は、個々のキャッシュ値をターゲットにするより良い方法を提供します。Django のキャッシュ フレームワークには、システム全体のバージョン識別子があり、VERSION キャッシュ設定を使用して指定されます。この設定の値は、キャッシュ プレフィックスおよびユーザー指定のキャッシュ キーと自動的に組み合わされて、最終的なキャッシュ キーが取得されます。

于 2012-06-28T15:11:01.337 に答える