Smarty Cachedファイルの無効化
-
27-09-2019 - |
質問
Smartyキャッシングに少し深く行きたいので、簡単な質問があります...
キャッシュの無効化を操作するには、Smartyがキャッシュを保存しているディレクトリを知りたいです。たとえば、に関連するすべてのキャッシュページ
user_id=123
保管したいcache/users/123/
. 。どこcache
Smarty Caching dirです。 Smartyに関連するキャッシュを保存するように言うにはどうすればよいですかuser_id=123
でcache/users/123/
? Smartyは、このディレクトリにサブテンプレートのキャッシュを保存しますか?このディレクトリのキャッシュのクリーニングに関する推奨事項はありますか?このディレクトリからファイルを削除するだけで、一部の訪問者が現在このページにアクセスしている場合、いくつかのエラーを引き起こす可能性があると思います(Smartyがテンプレートキャッシュが見つかったときにエラーが発生する可能性がありますが、サブテンプレートキャッシュは既に削除されているため見つかりません。例えば)。
推奨事項とアドバイスをいただければ幸いです。
ありがとうございました。
解決
Smarty Docs:The」をご覧くださいキャッシュグループ「セクション。まさにそれを行います。
他のヒント
あなたがすべき いいえ 手動でキャッシュをクリアします。そのためには、clear_cache()およびclear_compiled_tpl()を使用します。すべてのキャッシュをクリアすることができ、またそれらで選択的なクリアを行うことができます。
使用することは、あなたが望む場所に応じて、Smarty Cachedirを切り替えることができます(あなたはそれをいくつかの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はもう少し難しく、すべてのマップを使用してEachを使用して、新しいコンパイル監督を割り当ててから、次のコマンドを実行する必要があります。
$smarty->clear_cache();
しかし、あなたが言ったように、削除があるときにファイルが要求される可能性があります。 :-(
ただし、異なるキャッシュフォルダーを使用することはお勧めしません。Smartyは出力をキャッシュせず、コンパイルされたPHPファイルだけです。