Yii に関する覚え書き (スキーマキャッシュ)
http://www.yiiframework.com/doc/guide/1.1/ja/database.ar#sec-2 にはアクティブレコードを使用する場合、データベーススキーマに変更がないのであれば、キャッシュを使うことでメタデータの分析をしなくて済む、とある。
説明には schemaCachingDuration プロパティを0よりも大きな値にせよ、と書いてあるがそれだけではキャッシュされなかった。それ以外に cache コンポーネントも追加しておかないとダメ。今回は APC でキャッシュすることにした。 APC 以外にも ファイルや DB などでもキャッシュできる。詳しくは http://www.yiiframework.com/doc/api/1.1/#system.caching を参照。
サンプル
- protected/config/main.php
<?php return array( ... 'components'=>array( 'cache' => array( 'class' => 'CApcCache', ), 'db'=>array( ... 'schemaCachingDuration'=>3600, ), ), );
これを入れたところ、かなり速度が改善。レスポンスが返ってくるまで 3 〜 4 秒かかっていたページが 1 秒未満で返ってくるようになった。
必ず入れておいた方がいい設定だと思う。 スキーマを変更した際にキャッシュをクリアすること要るけど。