キャッシュのセットアップ

まずはじめにキャッシュを有効にします。これは、$caching = 1 (あるいは 2) を設定するだけです。

例. キャッシュを有効にする
  1. <?php
  2. $simplate = new Simplate();
  3. $simplate->caching = 1;
  4. $simplate->display('index.tpl');
  5. ?>

いつものようにテンプレートから出力内容をパースするために display('index.tpl') を呼び出しますが、キャッシュを有効にした事でその出力内容をコピーしたファイルが $cache_dir 内に保存されます。次回 display('index.tpl') が呼ばれる際には、再びテンプレートをパースする代わりにキャッシュされたコピーが使用されます。

テクニカルノート
  • $cache_dir 内のファイルにはテンプレート名に類似した名前が付けられます。PHPスクリプトとして実行されません。これらのファイルは編集しないで下さい!

各々のキャッシュされたページは、$cache_lifetime 生存時間が限られています。デフォルト値は 3600 秒です。期限が過ぎた後、キャッシュは再生成されます。$caching = 2 を設定する事によって、個々のキャッシュに自分自身の生存時間を与える事が可能です。詳細は、$cache_lifetime を参照して下さい

例. キャッシュごとに生存時間を設定する
  1. <?php
  2. $simplate = new Simplate();
  3. $simplate->caching = 2; // 生存時間はキャッシュごと
  4. // index.tpl に 5 分の cache_lifetime をセットします
  5. $simplate->cache_lifetime = 300;
  6. $simplate->display('index.tpl');
  7. // home.tpl に 1 時間の cache_lifetime をセットします
  8. $simplate->cache_lifetime = 3600;
  9. $simplate->display('home.tpl');
  10. // 注: $caching = 2 の時、次のような $cache_lifetime の設定は動作しません。
  11. // home.tpl のキャッシュの生存時間は既に 1 時間にセットされているので、
  12. // もはや、$cache_lifetime の値が尊重される事はありません。
  13. // home.tpl のキャッシュは、今までどおり 1 時間後に満期になるでしょう。
  14. $simplate->cache_lifetime = 30; // 30 seconds
  15. $simplate->display('home.tpl');
  16. ?>

$compile_check が有効の時、キャッシュファイルに入り組んだすべてのテンプレートファイルと設定ファイルは 修正されたかどうかをチェックされます。もしキャッシュが生成されてからいくつかのファイルが修正されていた場合、キャッシュは即座に再生成されます。これは最適なパフォーマンスのためには僅かなオーバーヘッドになるので、$compile_check は FALSE にして下さい。

例. $compile_check を有効にする
  1. <?php
  2. $simplate = new Simplate();
  3. $simplate->caching = 1;
  4. $simplate->compile_check = true;
  5. $simplate->display('index.tpl');
  6. ?>

$force_compile が有効の場合、キャッシュファイルは常に再生成されます。これは事実上、キャッシュ機能を無効にします。通常、$force_compile は [ デバッグ] 目的でのみ使用し、キャッシュは $caching = 0 にセットして無効にするのがさらに効率の良い方法です。

clear_cache() 関数によって、個々のキャッシュファイルをクリアする事ができます。

例. キャッシュをクリアする
  1. <?php
  2. $simplate = new Simplate();
  3. $simplate->caching = 1;
  4. // index.tpl のキャッシュファイルをクリアします
  5. $simplate->clear_cache('index.tpl');
  6. $simplate->display('index.tpl');
  7. ?>