出力キャッシュ、続きの続き
やっぱりPEAR::Cache_Lite_OutputのAPIに合わせることにした。その方がすっきりするような気がしてきたので。結局最初の実装に戻ったことになるのか。こういうAPI設計はいつも悩む。
- Moony_Cache::outputStart($id, $lifetime = 3600): bool
- キャッシュの出力を試みる
- キャッシュが存在する場合、出力してtrueを返す
- キャッシュが存在しない場合、出力キャッシュを開始してfalseを返す
- Moony_Cache::outputEnd(): void
- 出力キャッシュを終了する
- 出力バッファの内容をキャッシュファイルに保存する
- バッファの内容を出力する
アクションクラスの出力内容をキャッシュすることが可能に:
<?php class Foo extends Moony_Action { function execute() { if ($this->cache->outputStart('id')) { // キャッシュ出力成功、処理終了 return; } // 出力キャッシュ中… // 処理 // テンプレート出力 $this->render(); // 出力キャッシュ終了、キャッシュファイルに保存/出力 $this->cache->outputEnd(); } } ?>
ちなみに、Zend FrameworkのZend_Cache_Frontend_Outputの実装もほぼ同じだった。