第 14章キャッシュ
キャッシュは出力内容をファイルに保存する事によって、 display() 又は fetch() を呼び出す速度を向上させるために使用されます。キャッシュが有効の場合、 出力を再生成せずに表示されます。特に処理時間が長いテンプレートは、 キャッシュを使用する事で大きく速度が上昇するでしょう。 キャッシュされるのは display() 又は fetch() の出力結果なので、1つのキャッシュファイルが複数のテンプレートファイルや 設定ファイル等で構成されていることもあります。
テンプレートが動的コンテンツの場合、何をどれくらいの期間キャッシュするのか注意が必要です。 例えば、Webサイトの一面にそれほど変更されないコンテンツが表示されている場合は、 一時間かそれ以上、このページをキャッシュしても問題なく動作するでしょう。 一方、一分経過するごとに新しい情報が格納される天気図をページに表示する場合は、 このページをキャッシュする事は意味をなさないでしょう。
キャッシュのセットアップ
まずはじめにキャッシュを有効にします。これは、 $caching = 1 (あるいは 2) を設定するだけです。
いつものようにテンプレートから出力内容をパースするために display('index.tpl') を呼び出しますが、 キャッシュを有効にした事でその出力内容をコピーしたファイルが $cache_dir 内に保存されます。次回 display('index.tpl') が呼ばれる際には、再びテンプレートをパースする代わりにキャッシュされたコピーが使用されます。
テクニカルノート: $cache_dir 内のファイルにはテンプレート名に類似した名前が付けられます。 拡張子は .php ですが、実際にはPHPスクリプトとして実行されません。 これらのファイルは編集しないで下さい!
各々のキャッシュされたページは、 $cache_lifetime 生存時間が限られています。デフォルト値は 3600 秒です。 期限が過ぎた後、キャッシュは再生成されます。 $caching=2 を設定する事によって、個々のキャッシュに自分自身の生存時間を与える事が可能です。詳細は、 $cache_lifetime を参照して下さい
$compile_check が有効の時、 キャッシュファイルに入り組んだすべてのテンプレートファイルと設定ファイルは 修正されたかどうかをチェックされます。 もしキャッシュが生成されてからいくつかのファイルが修正されていた場合、 キャッシュは即座に再生成されます。 これは最適なパフォーマンスのためには僅かなオーバーヘッドになるので、 $compile_check は FALSE にして下さい。
$force_compile が有効の場合、 キャッシュファイルは常に再生成されます。これは事実上、キャッシュ機能を無効にします。通常、 $force_compile は デバッグ 目的でのみ使用し、キャッシュは $caching = 0. にセットして無効にするのがさらに効率の良い方法です。
is_cached() 関数は、テンプレートが有効なキャッシュを持っているかどうかを調べるのに使われます。 もしデータベースフェッチを必要とするようなテンプレートのキャッシュが存在する場合、 フェッチ過程をスキップするためにこの関数を使う事が出来ます。
{insert} テンプレート関数によってページの一部を動的に保つ事が出来ます。 例えば、すべてのページは右下に表示されるバナー以外はキャッシュが可能だとします。 バナー部分には {insert} 関数を使う事によって、キャッシュされたコンテンツの中に動的な要素を保つ事ができます。 詳細な説明や例は、{insert} のドキュメントを参照してください。
clear_all_cache() 関数または clear_cache() 関数によって、個々のキャッシュファイル (そしてグループ) をクリアする事ができます。