cakephp1.2でcacheを使う
cakephp1.1の時と同じように(ちょっと違うけど)キャッシュの設定をする。
- core.phpの設定 Cache.checkのコメントを削除
- controllerの設定 プロパティに追加(※Cacheヘルパーを指定しないと動かない)
Configure::write('Cache.check', true);
var $helpers = array('Html', 'Cache');
アクションに追加(※trueだと動かない)
$this->cacheAction = '+12 hours';
これでキャッシュが有効になる。
以下はCacheヘルパーを指定しないといけないということに気づくまでのメモ。
ソースを追ってみると、cake/libs/view/view.phpの665行目のisset($this->loaded['cache'])がfalseな為キャッシュが無効と判定されている。 [php] if (isset($this->loaded['cache']) && *1 && (Configure::read('Cache.check') === true)) { if (is_a($this->loaded['cache'], 'CacheHelper')) { $cache =& $this->loaded['cache'];
if ($cached === true) {
$cache->view = &$this;
}
$cache->base = $this->base;
$cache->here = $this->here;
$cache->helpers = $this->helpers;
$cache->action = $this->action;
$cache->controllerName = $this->name;
$cache->layout = $this->layout;
$cache->cacheAction = $this->cacheAction;
$cache->cache($___viewFn, $out, $cached);
}
}
[/php]
loaded['cache']って何?って調べると読み込まれているヘルパーのことだったので、ヘルパーにCacheを指定すると無事キャッシュが有効なりました。 よかった、ぜったいバグだと思ってた。
*1:$this->cacheAction != false