質問

Smartyキャッシングに少し深く行きたいので、簡単な質問があります...

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

  2. このディレクトリのキャッシュのクリーニングに関する推奨事項はありますか?このディレクトリからファイルを削除するだけで、一部の訪問者が現在このページにアクセスしている場合、いくつかのエラーを引き起こす可能性があると思います(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ファイルだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top