スマーティのキャッシュの使い方のメモ
よく使うスマーティの使い方は、
$_GETで、index.phpに引数を渡して、データベースなり、配列なりから呼び出したレコードでアサインし、指定したテンプレートで表示する。
いまどき、クエスチョンマークかよ!と、冷笑されるので、mod_rewriteで、htmlを装う。
本当は、スクリプトを使わなくていいのに、そのほうが簡単なので、スクリプトで書いてしまう。
そんな帳尻を合わせてくれる。キャッシュですが、下手こくと、トンでもなページが表示されてしまったりします。
だから、そんな自分に、
キャッシュで下手こくなよ、Memo
<?php require('Smarty.class.php'); $smarty = new Smarty; //このディレクトリはwebサーバのドキュメントルート下に置く事を推奨しません。 とスマーティ曰く $smarty->cache_dir = './cache/'; //生存時間は3600sec でいいなら $smarty->caching = true;または、1 //生存時間を自分で決める $smarty->caching = 2; $smarty->cache_lifetime = 300; //ずっとキャッシュしたいときには、 $smarty->cache_lifetime = -1; //常に作る $smarty->cache_lifetime = 0; //キャッシュはしない $smarty->caching = false;または、0 if(is_set($_GET['q']) and !empty($_GET['q'])){ $cache_id = $_GET['q']; //以下、クエリストリングを評価して、キャッシュを作成するべきかどうかを判断する //理由:どんなクエリに対しても、キャッシュを作るほどお人よしになってはいけないから、 } //キャッシュしていい場合は、 if(!$smarty->is_cached('index.tpl',$cache_id)) { //普通にアサインする。 $contents = "キャッシュしか受け取れません"; $smarty->assign($contents); } $smarty->display('index.tpl',$my_cache_id); // 指定したidのキャッシュを消す。 $smarty->clear_cache(null,"sports"); // 全てのキャッシュをクリアする $smarty->clear_all_cache(); // テンプレートのキャッシュを破棄する $smarty->clear_cache("index.tpl"); その他 cache_id グループは|で区切る。ディレクトリセパレータみたいに使える。 ?>