SOHOゆいちのサイト
Bsheでは、Zend_Cacheを用いて、テンプレートエンジンを高速化しています。
テンプレートエンジンはHTMLをDOM解析する方式を利用しているのですが、PHPのDOMクラスはシリアライズ化して保存することができないので、やむ得ず自力で書いたDOM解析エンジンを積んでいます。
テンプレートの変更の際だけ再生成されるキャッシュが必要となったのですが、Zend_Cacheには「Zend_Cache_Frontend_File」なる便利なクラスが用意されています。
これは、元となるファイルを指定して、そのファイルが更新されていなければキャッシュが取得でき、ファイルが更新されていればキャッシュが取得できないというまさにうってつけの機能です。
実際の実装はBsheの以下のクラスを参考にしてください。(ダウンロードはこちら)
テンプレートファイルを読み込み、テンプレートクラスを初期化するところで
$frontendOptions = array(
‘master_file’ => ‘HTMLのテンプレートファイルの指定’,
‘automatic_serialization’ => true,
‘ignore_user_abort’ => true
);
$backendOptions = array(
‘cache_dir’ => ‘/cache’ // キャッシュファイルを書き込むディレクトリ
);
$cache = Zend_Cache::factory(‘Core’, ‘File’, $frontendOptions, $backendOptions);if ($template = $cache->load(‘キャッシュ名’) {
// キャッシュ読み込み
$template->_isCached = true;
$template->setParams($this->_params);
return $template;
}
のようにして、キャッシュがあれば、キャッシュから取得したテンプレートクラスを返すようにします。
実際の実装では、この後ろで、HTMLのテンプレートファイル読み込んで、DOM解析したテンプレートクラスを返すようになっており、もしキャッシュがあれば上記の部分でreturnされるため、DOM解析の時間を節約できます。
www.bshe.org (created by itassist.info)