キャッシュはウェブアプリケーションのパフォーマンスを改善する、安く効果的な方法です。 比較的静的なデータをキャッシュし、リクエストがあった際にそのキャッシュを利用することで、 データを生成するための時間を抑える事ができます。
Yii でキャッシュを利用するには、主に設定(config)と キャッシュアプリケーションコンポーネントへのアクセスが必要です。 次のアプリケーション設定は、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 拡張を使用します。
CXCache: PHP XCache 拡張を使用します。 注意、これは version 1.0.1 以降で利用可能です。
CEAcceleratorCache: PHPEAccelerator拡張を使用します。
CDbCache: データベーステーブルを使用してキャッシュデータを保存します。 デフォルトでは、ランタイムディレクトリ下に SQLite3 データベースを作り、使用します。 connectionID プロパティを設定することで、 明示的にデータベースを指定することができます。
CDummyCache: なにもキャッシュを行わないダミーキャッシュを提供します。
このコンポーネントの目的は、キャッシュを利用できることをチェックする必要があるコードを簡素化することです。
たとえば、開発中やサーバに実際のキャッシュサポートがない際に、このキャッシュコンポーネントを使用できます。
実際のキャッシュサポートが有効になった際に、対応するキャッシュコンポーネントを使用するために、切り替えることができます。
どちらの場合も、Yii::app()->cache
が null
であっても、データを取得するために同じコード Yii::app()->cache->get($key)
を使用できます。
このコンポーネントはバージョン 1.0.5 以降で有効です。
ヒント: これら全てのキャッシュコンポーネントは同じベースクラス CCache より継承されているため、コードの修正なしに、 異なるタイプのキャッシュを利用する事ができます。
キャッシュは、異なるレベルで使用することが可能です。 一番弱いレベルでは、変数のような、単一のデータを保持するためにキャッシュを利用し、 これをデータキャッシュと呼びます。次のレベルでは、 キャッシュにビュースクリプトの一部で生成されたページの断片を保持します。 また、一番強いレベルでは、キャッシュにページ全体を保持し、 キャッシュが必要な際にそれを利用します。
次のいくつかのサブセクションでは、これらのレベルにキャッシュを使用する方法を 詳しく述べます。
注意: 定義によっては、キャッシュは揮発性のストレージメディアです。 それは、有効期限内であっても、キャッシュデータの存在を保障しません。 したがって、永続的なストレージとしてキャッシュを使用しないでください。 (たとえば、セッションデータを保存するために、キャッシュを用いない)
Signup or Login in order to comment.