2

Smarty キャッシングについてもう少し詳しく知りたいので、いくつか簡単な質問があります...

  1. キャッシュの無効化を操作するには、Smarty がキャッシュを保存しているディレクトリを知りたいです。たとえば、関連するすべてのキャッシュされたページuser_id=123を に保存しcache/users/123/ます。cachesmarty caching dir はどこにありますか。user_id=123at に関連するキャッシュを保存するように smarty に指示するにはどうすればよいcache/users/123/ですか? Smarty はサブテンプレートのキャッシュもこのディレクトリに保存しますか?

  2. このディレクトリのキャッシュの消去に関する推奨事項はありますか? 一部の訪問者が現在このページにアクセスしている場合、このディレクトリからファイルを削除するだけでエラーが発生する可能性があると思います (エラーは、テンプレート キャッシュが見つかったことを smarty が確認しても、サブテンプレート キャッシュが既に削除されているために見つからない場合に発生する可能性があります。例えば)。

推奨事項やアドバイスをいただければ幸いです。

ありがとうございました。

4

3 に答える 3

1

手動でキャッシュをクリアしないでください。そのために clear_cache() と clear_compiled_tpl() を使用します。すべてのキャッシュをクリアし、選択的にクリアすることもできます。

于 2010-08-10T13:53:44.697 に答える
0

Smarty ドキュメントの「キャッシュ グループ」セクションを参照してください。まさにそれを行います。

于 2010-08-10T16:19:29.257 に答える
0

必要な場所に応じて、スマートなキャッシュディレクトリを切り替えることができます(独自のifステートメントで確認できます)

// Create smarty object
$smarty = new Smarty();

// Change smarty-dir is like this:
if (isset($_GET['userId'])) {
    $smarty->compile_dir = '/path/to/dir/' . $_GET['userId'];
} else {
    $smarty->compile_dir = '/path/to/dir/default';
}

ポイント 2 は少し難しく、すべての mapps を foreach し、新しいコンパイル ディレクトリを割り当ててから、次のコマンドを実行する必要があります。

$smarty->clear_cache();

しかし、あなたが言ったように、削除中にファイルが要求される可能性があります。:-(


ただし、異なるキャッシュ フォルダーを使用することはお勧めしません。Smarty は出力をキャッシュせず、コンパイルされた PHP ファイルだけをキャッシュします。

于 2010-08-10T13:16:03.860 に答える