導入 - キャッシュ

導入 - キャッシュ -- Sigma が "準備された" テンプレートをキャッシュする方法

キャッシュについての FAQ

1. このキャッシュ機能って、実際のところどんなものなの?
2. データについては?
3. テンプレートが変更されると、キャッシュも再作成されるのですか?
4. TTL は設定できますか?
5. キャッシュをクリアすることはできますか?
6. これにより、パフォーマンスは向上するのですか?

1. このキャッシュ機能って、実際のところどんなものなの?

これは、テンプレートの読み込み時の正規表現によるパースを回避する方法です。 もとのテンプレートを毎回パースするかわりに、 その内部表現 (シリアライズした配列) を保持しておき、それを読み込みます。

Smarty におけるテンプレートのコンパイルを考えてみてください。 Sigma はテンプレートを PHP コードにコンパイルしません。

2. データについては?

データのキャッシュは 行いません。 データをキャッシュしたければ、PEAR の キャッシュ関連のパッケージ を使うことを考慮してください。

3. テンプレートが変更されると、キャッシュも再作成されるのですか?

はい。

4. TTL は設定できますか?

いいえ。キャッシュされた内容は、テンプレートが変更されるまでは有効となります。

5. キャッシュをクリアすることはできますか?

はい。キャッシュディレクトリのファイルを削除してください。

6. これにより、パフォーマンスは向上するのですか?

はい。個人的にそれを実感しています。

もし何らかのベンチマークを行うのなら、人為的なものではなく 実際に使用している複雑なテンプレートで行ってください。 テンプレートが大きく複雑なもの (ブロック数が十数個になるものなど) になればなるほど、パフォーマンスの向上は大きくなります。

キャッシュの使用法

キャッシュ処理は完全に透過的に行われます。 この機能を活用するには、 コンストラクタ の二番目の引数を渡すか、あるいは setCacheRoot() メソッドを後でコールするだけです。
<?php
require_once 'HTML/Template/Sigma.php';

$tpl =& new HTML_Template_Sigma('./templates', './templates/prepared');

$tpl->loadTemplateFile('default.html');

// 続行

?>

./templates にある各テンプレートは、 loadTemplatefile()addBlockfile()replaceBlockfile() あるいは <!-- INCLUDE --> で読み込まれます。準備されたバージョンは ./templates/prepared に配置されます。