スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

CakePHPでWebアプリケーションなどを構築する場合、外部APIやDBアクセスが頻繁に発生します。自サーバならともかく、外部サーバのAPIなどを利用する場合はアクセス回数に制限を設けているものもあるので、サイトへのアクセスが増えた場合は改善が求められるかもしれません。

そこで、今回はCakePHPのビューキャッシュの活用方法です。
基本的にビューキャッシュはビュー単位、つまりはアクション毎にキャッシュを作成することが可能です。

キャッシュを有効にする

キャッシュを有効にするためには設定ファイル「app/config/core.php」の以下のコメントアウトを解除します。

//Configure::write('Cache.disable', true);
//Configure::write('Cache.check', true);

コメントアウトを外し、「Cache.disable」の値を「false」にすることでキャッシュが有効になります。

Configure::write('Cache.disable', false);
Configure::write('Cache.check', true);

ビューキャッシュの利用方法

ビューキャッシュを利用するためにはコントローラ内で、ヘルパー変数に「Cache」を設定して、変数「cacheAction」にキャッシュ有効期限などを設定します。

class SampleController extends AppController {
	var $name = "Sample";
	var $uses = null;
	var $helpers = array('Cache');

	var $cacheAction = '1 day';

この場合、Sampleアクションにアクセスがあった全てのページを、1日だけキャッシュに保持します。

アクション毎に設定を変える場合は以下のように指定します。

	var $cacheAction = array(
		'one/' => 3600,
		'two/' => '1 day',
		'three/' => '1 week',
	);

整数は秒単位となるので、「sample/one/」のページについては1時間保持されます。また、「sample/two/」は1日、「sample/three/」は1週間保持される設定です。

当然の事ですが、単純にページ数の多いサイトで全てをキャッシュした場合、キャッシュ容量が膨大になってしまいます。アクセスが多いページはキャッシュを有効し、アクセスが少ないページは動的なままといったような振り分けは必要でしょう。

さて、「sample/」のキャッシュ、つまりindexアクションについて、どのように指定するかを調べてみたのですが、どうやらCakephpのバグで個別には指定できないようです。
それから改善されたのかな。

このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search