ホームページ >バックエンド開発 >PHPチュートリアル >Smartyのキャッシュ操作スキル_PHPチュートリアル
1. キャッシュを使用する
Smarty のキャッシュを有効にするには、caching を true に設定し、cache_dir を指定するだけです。
キャッシュの有効期間を秒単位で指定するには、cache_lefetime を使用します
同じページに対して複数の異なるキャッシュを生成するには、$smarty->display(index.tpl,$my_cache_id); のように、表示または取得する 2 番目のパラメーター cache_id を追加します。この機能は、異なる $_GET で異なるキャッシュを実行するために使用できます。キャッシング
2. キャッシュをクリアします
clear_all_cache();//すべてのキャッシュをクリアします
clear_cache(index.tpl);//index.tplのキャッシュをクリアします
clear_cache(index.tpl,cache_id);//指定されたIDのキャッシュをクリアします
3. カスタム キャッシュ方法を使用する
キャッシュを処理するカスタム関数を使用するには、cache_handler_func を設定します
例:
$smarty->cache_handler_func = "myCache";
function myCache($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null){
}
この関数は通常、$action:
に基づいてキャッシュの現在の操作を決定します。
スイッチ($アクション){
case "read"://キャッシュコンテンツの読み取り
case "write"://ライトキャッシュ
ケース「クリア」://クリア
}
通常、md5 ($tpl_file.$cache_id.$compile_id) を唯一のcache_idとして使用します
必要に応じて、gzcompress と gzuncompress を使用して圧縮および解凍します
4. キャッシュを部分的に閉じます
特定の領域のキャッシュ (必要なキャッシュのみ) を無効にするには、いくつかの方法があります:
挿入:
insert タグで使用する処理関数を定義します。関数名の形式は次のとおりです。 insert_xx(array $params, object &$smarty) ここで、xx は insert_abc の名前です。メソッドは {insert name=abc} です
パラメータは $params
を通じて渡されます
挿入プラグインにすることもできます。ファイル名はinsert.xx.php、関数名はsmarty_insert_aa($params,&$smarty)、xxの定義は上記と同じです
register_block:
ブロックを定義します:smarty_block_name($params,$content, &$smarty){return $content;} //nameはエリア名を表します
Register block:$smarty->register_block(name, Smarty_block_name, false); // 3 番目のパラメータ false は、この領域がキャッシュされないことを意味します
テンプレートの作成: {name}content{/name}
ブロックプラグインとして記述:
1) プラグイン関数 block.cacheless.php を定義し、smarty の plugins ディレクトリに配置します
block.cacheless.phpの内容は以下の通りです
関数 Smarty_block_cacheless($param, $content, &$smarty) {
$content を返します;
}
?>
2) プログラムとテンプレートを作成します
サンプルプログラム:testCacheLess.php
include(Smarty.class.php);
$smarty = 新しい Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display(cache.tpl);
?>
使用したテンプレート:cache.tpl
キャッシュ済み: {$smarty.now}
{キャッシュレス}
キャッシュされていません:{$smarty.now}
{/キャッシュレス}