![[CakePHP] Viewをキャッシュする [CakePHP] Viewをキャッシュする](http://www.happytrap.jp/blogs/image/default_cakephp2-550x200.jpg)
CakePHPでViewをキャッシュする方法です。
環境
PHP 5.3.10
CakePHP 2.1.0
CakePHP 2.1.0
設定
Cacheの設定項目のdisableをfalseに、checkをtrueに指定します。app/Config/core.php
1 2 3 4 5 |
Controller
Controller内でCacheヘルパーを追加します。また、アクション毎のキャッシュタイムも設定します。app/Controller/ExamplesController.php
1 2 3 4 5 6 7 8 |
View
View内でキャッシュしたくないコンテンツは<!–nocache–><!–/nocache–>で囲みます。
ログイン状態によって表示を変えたい箇所がある場合などに利用できます。
app/View/Examples/index.ctp
1 2 3 4 5 6 7 | <!--nocache--> <?php if ($this->Session->check('User.name')) : ?> <?php echo h($this->Session->read('User.name')); ?>. <?php else: ?> <?php echo $this->html->link('Login', 'users/login')?> <?php endif; ?> <!--/nocache--> |
キャッシュを表示する場合はControllerを通らないので、ログイン状態などの動的な値は上記例のようにセッションを利用するのが良いと思います。
これで、Viewをキャッシュすることができました。
以下のディレクトリにキャッシュファイルが生成されますので確認してみてください。
app/tmp/cache/views/
同時接続数10、リクエスト数100でベンチマークをとってみたところ、私の環境ではViewをキャッシュした場合に約6倍程パフォーマンスが向上しました。
Viweキャッシュなし | Viewキャッシュあり | |
---|---|---|
Requests per second | 30.21 | 190.38 |
アプリケーションの仕様や環境に依るところが大きいですが、トラフィックの多いサイトでは試してみる価値はあると思います。
参考サイト