フレームワークは便利なんだけど、動作が遅い。
もちろん CakePHP も例外ではない・・・。
ということで、高速化Tipsをまとめてみた。
1.PHP-APCで中間コードをキャッシュ
これはCakePHPに限らずだけど、
結構パフォーマンスに差が出るのでやっておく。
2.Formヘルパーを使わない
可能な限りHTMLは直書きでいいと思う。
3.Model ではquery() を使ってSQLを直書きする。
find()とか便利だけど、ちゃんとSQL書いたほうがいい。
どんなクエリを発行しているか確認しやすいし、
変なクエリの発行も防げる。
ただし、配列のインデックスがおかしくなるのが面倒。
4.Model の recursive の初期値は -1 に設定する。
意図しないところでassociationが効いてたりするので、
初期値を -1 にするといい。
ただ基本は3番目のTipsのように query() を使うので
あまり関係ないかも。
5.PHP-APC or memcache でモデル結果キャッシュ
CakePHPにはモデルの結果をキャッシュするモデルキャッシュがある。
デフォルトはファイルキャッシュになっているので
メモリ上にキャッシュした方がいい。
DBのクエリキャッシュもあるけど、
DBに接続するコストの分遅くなるから、
こっちでキャッシュしておいた方がいいと思う。
6.Modelの動的呼び出し
Controller で $uses を使って利用モデルを設定すると、
特定のアクションでは利用しないモデルまで無駄に呼び出すので、
Model::loadModel() を使って動的に呼び出したほうがいい。
7.デバッグモードをOFFにする
意外に忘れるので、OFFにしておく。
8.ビューキャッシュ
ビューをキャッシュすることで、
Controllerでの処理を飛ばすことができる。
ただし、Controllerの処理を飛ばすと
Viewへの変数バインドがうまく動作しなかったりするっぽい。
キャッシュの挙動については細かく設定できるので、
使いこなせば便利だろーけど、面倒なので使ってません・・・。
9.DebugKit をインストールする
高速化手法ではないが、これをインストールすると便利。
ページのレスポンスタイム、SQLログ、includeされているファイルなど、
色々と確認できる。
とりあえず、こんな感じかな。