キャッシュヘルパーを利用して、レイアウトやビューをキャッシュする。
ビューをキャッシュすることで負荷を減らすことができる。
※以下、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
あわせて読みたい関連記事
- Newer: コンソールを使用するインストール
- Older: cron ジョブ