Home > CakePHP Tips > ヘルパー > キャッシュ

キャッシュ

キャッシュヘルパーを利用して、レイアウトやビューをキャッシュする。
ビューをキャッシュすることで負荷を減らすことができる。
※以下、Cache.config は default のままとする。(キャッシュエンジンは File)

core.php の設定

core.php で Cache を有効にする。設定は下記の通り。
※コメントアウトされているので、コメントをはずす。

Configure::write('Cache.disable', false); // true を false に修正
Configure::write('Cache.check', true);

コントローラの設定

CacheHelper を読み込む。

var $helpers = array('Cache');

キャッシュするアクションの指定。

var $cacheAction = array(
	'view/23/' => 21600,
	'view/48/' => 36000,
	'view/52/'  => 48000
);

指定のアクションの全て、または、全アクションをキャッシュする場合。

var $cacheAction = array(
	'archives/' => '60000'
);
var $cacheAction = "1 hour";

特定のアクションをキャッシュしない場合。

action() {
    // アクション内で cacheAction を false にする。
    $this->cacheAction = false;
    /* 以下略 */
}

ビューの設定

特定箇所をキャッシュしたくない場合は、<cake:nocache> タグで囲む。

<cake:nocache>
/* キャッシュしたくない処理を記述する */
</cake:nocache>

キャッシュの手動クリア

手動でキャッシュのクリアを行う場合は、 clearCache を使用する。

function clearCache($params = null, $type = 'views', $ext = '.php')

注意点

ビューファイルでの $cache は NG

ビューファイル(example.ctp のファイル)では、$cache という変数を使ってはならない。

これは、View オブジェクトの loaded[‘cache’] の値が変わってしまうことが原因。

.ctp ファイル内では、HtmlHelper や FormHelper を使うときに $html-> や $form-> といった使い方をしているように、$cache にも CacheHelper のオブジェクトが設定されているので、別の値を代入すると正常にキャッシュできなくなる。

自動キャッシュクリアについて

通常、モデルが更新された場合 (Insert, update, delete) は関連するキャッシュがクリアされるが、自動キャッシュクリアが効くのはコントローラ名とモデル名が関連付けられている場合の同名コントローラによって変更を行った場合に限られている。

参考

キャッシュ :: 主要なヘルパー :: マニュアル :: 1.2 Collection :: The Cookbook

あわせて読みたい関連記事

Home > CakePHP Tips > ヘルパー > キャッシュ

検索
Feeds
メタ情報

ページの先頭へ