部分テンプレートもキャッシュできる
elementのことを部分テンプレートと呼んでいる。html全体ではなく、その一部のことでその部分をのみをキャッシュすることができる。キャッシュファイルの格納先は、
app\tmp\cache\views
になる。tmpのパスを変更する場合はリンクの記事を参考にしてほしい。
利用シーン
具体的に部分テンプレートを利用する状況とはどのようなシーンになるのだろうか?実際の利用例を示したい。
paypalという決済手段があり、paypal社は決済のapiウェブペイメントスタンダードを用意している。そのapiを利用すればpaypalの決済画面へ移動するためのフォームボタンhtmlを生成することができる。そのhtmlを生成する場合にメールアドレスなどの暗号化処理をしようとすると大きくシステムに負担をかけることになる。しかし、ページの他の部分には動的にhtmlを生成している箇所が多く存在し、ページ全体をキャッシュすることはできない。
上のようなシーンで部分テンプレートのキャッシュは威力を発揮する。
キャッシュのやり方
Cakephpの1.2系と2系ではやり方が異なる。
1.2系
1.2系では、core.phpで以下の設定を行っていることを前提にelementキャッシュを利用している。
Configure::write('Cache.disable', false); Configure::write('Cache.check', false);
上の設定をした上でelement内で以下のようにしてキャッシュをさせている。
//Configure::write('Cache.disable', true); echo $this->element('paypal_button', array('cache' => array('key' => DOMAIN.'-'.$id, 'time' => '+30 days')));
上のコメントアウトした行を有効にすることで、キャッシュをさせないように制御することが可能になる。例えば、開発環境ではキャッシュさせないといった場合に、コメントを外しておけばキャッシュされずに効率よく開発ができる。
Configure::writeを利用すればCakephpシステムのグローバル設定を随所で操作することができる。
2.0系
2.0系については、個人的にページキャッシュの制御に不安な点があるので、現状具体的に書くことができない。
2.0では、Configure::writeでキャッシュのオンオフを制御せずとも以下の方法でキャッシュをしないようにすることができるようだ。開発環境では下の方法を活用したい。
echo $this->element('paypal_button', array('cache' => false));
公式ドキュメントは以下のURLで確認できる。