cakePHPのモデルのインスタンスをキャッシュして高速化する

Twitter ツイート Hatena Bookmark ブックマーク

cakephp1.3を使っているとよくレスポンスタイムおそいなーと思う事は多々あると思います。
まあ機能が豊富な分遅いのはしかたないです。

まあロジックが複雑になればController actionやRender Controller Actionも重くなりますが、やっぱCore ProcessingがおもいなーとDebugKitでみると気になります。。

なんとかもっと早くしたいなーとかおもってモヤモヤしていました。
んで、たまたまController::loadModel()メソッドの中を見てた時に以下の部分の処理が目にとまりました。

1
2
3
persistModel === true) {
	$cached = $this->_persist($modelClass, null, $object);
}

なんかあやしいなーとおもって_persistメソッドをみてたら、あらびっくり。
モデルのインスタンスキャッシュしてるじゃありませんか!

これは使えると思い、早速appControllerのなかでpersistModelをtrueにしてみました。
ざっと100msぐらい早くなっていますね。まあMacBookPro上で実行しているんでそもそも遅いのですが・・・

persistModel = false

persistModel = true

どうやらModelのインスタンスを生成したものをserializeして保存しているぽいです。

ディスクI/Oどうなのよとか思うけど、まああんまり気にしなくてもいいんじゃないとも思います。
その辺はだれか教えて頂けるとたすかりますw

ちなみに、cache関数が使われているのが気になりましたが、あまり突っ込まない方向で・・・w

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。