smarty @Wiki

キャッシュのグループ

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

キャッシュのグループ

cache_idのグループを設定する事で、より複雑なグループにする事が出来ます。
これはcache_idの値の中の"|"によって各サブグループに分けられる事で成されます。
サブグループはいくらでも持つ事が出来ます。

ディレクトリ階層のようなキャッシュグループを考える事が出来ます。
例えば "a|b|c" というキャッシュグループは、"/a/b/c/" というディレクトリ構造だと考えられます。
clear_cache(null,"a|b|c") はファイル "/a/b/c/*" を、clear_cache(null,"a|b") はファイル "/a/b/*" を削除するのに似ています。
もし、clear_cache(null,"a|b","foo") のようなcompiled_id が指定されると、付加されたキャッシュグループ "/a/b/c/foo/" として扱われます。
clear_cache("foo.tpl","a|b|c") のようなテンプレート名が指定されると、Smarty は "/a/b/c/foo.tpl" を削除しようと試みます。
また、"/a/b/*/foo.tpl" のような、複数のキャッシュグループの下でテンプレート名を指定して削除する事は出来ません。
キャッシュグループは left-to-right のみ動作します。
グループとしてそれらをクリアするためには、 単一のキャッシュグループ階層の下でテンプレートをグループ化する必要があります。

キャッシュのグループ化はテンプレートディレクトリ階層によって混乱させられるべきではなく、 テンプレートがどのような構造なのかも知り得ません。
例えば、"themes/blue/index.tpl" のようなテンプレート構造があり、"blue" テーマのキャッシュファイルを全てクリアしたい時、 テンプレートファイル構造をまねた display("themes/blue/index.tpl","themes|blue") のような キャッシュグループ構造を作成する必要があり、それならば clear_cache(null,"themes|blue") によってキャッシュをクリアする事が出来ます。

例 13-9. cache_id グループ

<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

 // はじめの2つのcache_idグループが"sports|basketball"のキャッシュを全てクリアします。
$smarty->clear_cache(null,"sports|basketball");

 // はじめのcache_idグループが"sports"のキャッシュを全てクリアします。
 // これは"sports|basketball"又は"sports|(anything)|(anything)|(anything)|..."を用いてインクルードされたものでしょう。
$smarty->clear_cache(null,"sports");

 // cache_id として"sports|basketball"を用いてfoo.tpl のキャッシュファイルをクリアする
$smarty->clear_cache("foo.tpl","sports|basketball");


$smarty->display('index.tpl',"sports|basketball");
?>
ウィキ募集バナー