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 秒未満で返ってくるようになった。

必ず入れておいた方がいい設定だと思う。 スキーマを変更した際にキャッシュをクリアすること要るけど。