読者です 読者をやめる 読者になる 読者になる

【CakePHP 2.x】CakePHP 2.x の高速化Tips

CakePHP2.x

フレームワークは便利なんだけど、動作が遅い。
もちろん 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されているファイルなど、
 色々と確認できる。


とりあえず、こんな感じかな。