Smarty局部キャッシュのいくつかの方法紹介


多くの場合、私たちはsmartyを使う時、ページ全体をキャッシュすることを望んでいません。例えば、天気、株などのリアルタイム更新の情報です。キャッシュしなくてもいいです。一般的な実装には以下の3つの方法があります。
1.insert法:
Insert関数はinluce関数と似ていますが、insertに含まれる内容はキャッシュされず、テンプレートを呼び出すたびに関数が再実行されます。例えば、表示時間の関数を定義します。

function insert_get_current_time() {
return date("H:i:s");
}
// :
{insert name="get_current_time"} 
このようにページを開くたびに、キャッシュではなくリアルタイムの時間が表示されます。ここの関数名は必ずinsertで始まります。テンプレートのnameはこれに対応します。私たちの関数がいくつかのパラメータを含むなら、私たちのはテンプレートの中でこのようにすることができます。

{insert name="get_current_time" lid=#banner_location_id# sid=#site_id#}
// Smarty insert_get_current_time(array("lid"=>"12345","sid"=>67890"));
は、その結果を呼び出し位置に表示します。2.ダイナミックブロック法:
smartyコードで:

function smarty_block_nocache($param,$content,$smarty)   
{
return $content;
}
$smarty->register_block('nocache','smarty_block_nocache',false);
テンプレートファイルで:

<{nocache}>    // <{/nocache}>
3.プラグインblock法: これはblockと同じです。ただプラグインの形でやります。Smarty/pluginsディレクトリの下にファイルを作成します。block.nocache.php、ここの名前はきっと規範化します。そうでないとsmartyは識別できません。内容は以下の通りです

function smarty_block_nocache($param,$content,$smarty)
{
return $content;

テンプレートの中にずっと上にキャッシュされているところにnocacheをつければいいです。