shutils.rmtree()またはos.removedirs( ) をチェックアウトします。最初はおそらくあなたが望むものだと思います。
いくつかのコメントに基づく更新: 実際には、Django のキャッシュ メカニズムは、キーに を使用するよりも一般的できめ細かくなっpath
ています (ただし、そのレベルで使用することはできます)。一部のページには、さまざまな基準に基づいて有効期限が切れる 7 つまたは 8 つの個別にキャッシュされたサブコンポーネントがあります。コンポーネント キャッシュ名は主要なオブジェクト (またはオブジェクト クラス) を反映し、特定の更新で無効にする必要があるものを識別するために使用されます。
すべてのページには、メンバー/非メンバーのステータスに基づいた全体的なキャッシュ キーがありますが、それはページの約 95% にすぎません。残りの 5% はメンバーごとに変更される可能性があるため、まったくキャッシュされません。
無効なアイテムを見つけるためにキャッシュをどのように反復処理するかは、それが実際にどのように格納されているかに依存します。単純にグロブおよび/または再帰的なディレクトリ削除を使用できるファイルの場合、他のメカニズムの場合は、別のものを使用する必要があります。
私の答えと他のコメントのいくつかが言おうとしているのは、キャッシュの無効化を達成する方法は、キャッシュの使用/保存方法と密接に関係しているということです。
2 番目の更新: @andybak: つまり、あなたのコメントは、私の商用 Django サイトがすべて炎上することを意味していると思いますか? それについて頭を上げてくれてありがとう。問題に対する回答を試みていないことに気付きました。
Knipknap の問題は、彼がキャッシュ アイテムのグループを持っていることです。これらのアイテムは、名前が原因で関連しているように見えますが、キャッシュ メカニズムのキー生成ロジックは、パス + vary_on の MD5 ハッシュを作成することによってその名前を消去します。元のパス/パラメーターの痕跡がないため、適切なグループが見つかることを期待して、考えられるすべてのパス/パラメーターの組み合わせを徹底的に推測する必要があります。もっと面白い趣味があります。
パスやパラメーター値の組み合わせに基づいてキャッシュされたアイテムのグループを検索できるようにする場合は、直接パターン マッチングできるキャッシュ キーを使用するか、検索時に使用するためにこの情報を保持するシステムを使用する必要があります。
OPの問題と無関係ではないニーズがあったため、2年以上前にテンプレートフラグメントキャッシング、特にキー生成を制御しました。関連するキャッシュされたアイテムのグループを効率的に無効にするために、さまざまな方法で正規表現を使用できます。で構成可能なデフォルトのタイムアウトと vary_on 変数名 (実行時に解決される) も追加し、settings.py
名前とタイムアウトの順序を変更しました。これは、フラグメントに名前を付けるためにデフォルトのタイムアウトを常にオーバーライドする必要があるのは意味がないためです。fragment_name を解決可能にしました。 (つまり、変数にすることができます)マルチレベルのテンプレート継承スキームと他のいくつかのものでよりうまく機能します。
私の最初の回答の唯一の理由は、現在の Django では実際に間違っていましたが、私が長い間健全なキャッシュ キーを使用してきたため、私たちが離れた単純なメカニズムを文字通り忘れていたからです。