SERVICE こんな事ができます

CNTACT ご相談はお気軽に

 ABOUT US こんな会社です



2008/10/15 by づや

CakePHP1.2のビューキャッシュ(nocacheについて)

ビューキャッシュを使うとかなりパフォーマンスが向上するらしい。

静的なページには物凄く簡単に使える。
使い方もすぐ出てくる。

core.phpのConfigure::write(‘Cache.check’, true);にして、
使いたいコントローラで、ヘルパーにキャッシュを追加して、var $helpers = array(‘Cache’);
var $cacheAction = array(‘index’ => 86400);って変数にアクションと保持する時間を決めてあげる。

問題は、キャッシュしたくない部分。

マニュアルを見ると、

<cake:nocache>で囲めばいいよと書いてあるだけ。
たしかに、出来るキャッシュファイルを見ると、囲った部分はこのまま残ってるから効いてるんだけど、
キャッシュがあるとアクションが呼ばれないので、上記の例だと$this->setで設定していた$newProductsがないのでエラーが出る。

じゃあどう値を取得すればいいのかなと思って、調べてみた。

CakePHP User in Japanに「cake:nocacheの謎」というフォーラムがあった。

参交リンクとして、あった「View caching problem with <cake:nocache></cake>」を読んでみた。

たぶん、$this->requestActionでその都度、その部分用の値取得用アクションを呼ぶのがいいよってお話。

今回の例でいうと、$newProducts取得用のアクションを作る。

Viewをちょっと変更。

これで、一応ちゃんと動いた。
でもrequestActionはパフォーマンスが悪いらしい。
キャッシュにしたのに、処理が逆に重くなるような本末転倒な事態も起こりえるかも。
requestActionで呼ぶ処理が重い時は、その部分をelementにして、別途にキャッシュをつくっとく方がいいっぽい。

  • http://www.igarashi-design.com/blog/%e3%80%90cakephp%e3%80%91%e3%83%93%e3%83%a5%e3%83%bc%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5/ igarashiDesign::blog » Blog Archive » 【Cakephp1.3.9】ビューキャッシュ