キャッシュ概要

キャッシュはウェブアプリケーションのパフォーマンスを改善する、安価で効果的な方法です。 比較的静的なデータをキャッシュし、リクエストがあった際にそのキャッシュを利用することで、データを生成するための時間を抑える事ができます。

Yii におけるキャッシュの利用は、主として、アプリケーション初期設定とキャッシュアプリケーションコンポーネントへのアクセスに関係します。 次のアプリケーション初期設定は、2台のキャッシュサーバで memcache を使用するキャッシュコンポーネントを指定しています。

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'system.caching.CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
);

アプリケーションが動作しているときは、Yii::app()->cache でキャッシュコンポーネントにアクセスできます。

Yii は、異なるメディアにキャッシュデータを保存することができる、多様なキャッシュコンポーネントを提供します。 たとえば、CMemCache コンポーネントは PHP memcache 拡張をカプセル化し、キャッシュストレージのメディアとしてメモリを使用します。 CApcCache コンポーネントは、PHP APC 拡張をカプセル化します。 CDbCache コンポーネントは、キャッシュデータをデータベースに保存します。 以下は、利用可能なキャッシュコンポーネントの概要です:

  • CMemCache: PHP memcache 拡張 を使用します。

  • CApcCache: PHP APC 拡張 を使用します。

  • CXCache: PHP XCache 拡張 を使用します。

  • CEAcceleratorCache: PHPEAccelerator拡張 を使用します。

  • CRedisCache: ストレージバックエンドとして redis key-value データストアを使用します。

  • CDbCache: データベーステーブルを使用してキャッシュデータを保存します。 デフォルトでは、ランタイムディレクトリ下に SQLite3 データベースを作り、使用します。 connectionID プロパティを設定することで、明示的にデータベースを指定することができます。

  • CZendDataCache: キャッシュメディアとして Zend Data Cache を使用します。

  • CFileCache: キャッシュデータを保存するのにファイルを使用します。これはページのような大きなかたまりのデータに特に適しています。

  • CDummyCache: なにもキャッシュを行わないダミーキャッシュを提供します。 このコンポーネントの目的は、キャッシュが利用できることをチェックするためのコードを簡略化することです。 たとえば、開発中やサーバに実際のキャッシュサポートがない場合に、このキャッシュコンポーネントを使用することが出来ます。 そして、実際のキャッシュサポートが有効になったときに、対応するキャッシュコンポーネントに切替えて使用します。 どちらの場合も、Yii::app()->cachenull かも知れないと心配せずに、データを取得するために同じコード Yii::app()->cache->get($key) を使用できます。

ヒント: これら全てのキャッシュコンポーネントは同じベースクラス CCache より継承されているため、コードの修正なしに、異なるタイプのキャッシュを利用する事ができます。

キャッシュは、異なるレベルで使用することが可能です。 一番低いレベルでは、変数のような、単一のデータを保持するためにキャッシュを利用します。これを データキャッシュ と呼びます。 次のレベルでは、キャッシュにビュースクリプトの一部で生成されたページの断片を保持します。 また、一番高いレベルでは、キャッシュにページ全体を保持し、必要に応じてキャッシュからページを提供します。

次のいくつかの節では、これらの異なるレベルでキャッシュを使用する方法を詳しく述べます。

注意: 定義によって、キャッシュは揮発性のストレージメディアです。 それは、有効期限内であっても、キャッシュデータの存在を保証しません。 したがって、永続的なストレージとしてキャッシュを使用しないでください (たとえば、セッションデータを保存するために、キャッシュを用いてはいけません)。

Be the first person to leave a comment

Please to leave your comment.