SEARCH

このマニュアルはSmartyのものです。セキュリティなどの問題でRCMSでは利用できないものもありますので、ご注意ください。
キャッシュのグループ

キャッシュのグループ

$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/*' を削除するのに似ています。

  • $compile_idclear_cache(null,'a|b','foo') のように指定すると、 それをキャッシュグループに追加して '/a/b/c/foo/' として扱います。

  • テンプレート名を clear_cache('foo.tpl','a|b|c') のように指定すると、 Smarty は '/a/b/c/foo.tpl' を削除しようと試みます。

  • また、'/a/b/*/foo.tpl' のように、 複数のキャッシュグループの下でテンプレート名を指定して削除する事は出来ません。 キャッシュグループは左から右へ向かう順序でのみグループ化を定義できます。 グループとしてそれらをクリアするためには、 単一のキャッシュグループ階層の下でテンプレートをグループ化する必要があります。

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

例 14-9. $cache_id groups

<?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');
?>

SEARCH