データキャッシュは、PHP 変数をキャッシュし、 後でそのキャッシュから読み込めるようにします。 この目的のために、キャッシュコンポーネントのベースクラス CCache は、 多くの場合に利用される set() と get() の 2 つのメソッドを提供します。
キャッシュに変数 $value
を保存するには、ユニーク ID を選び、
set() を呼びます:
Yii::app()->cache->set($id, $value);
キャッシュされたデータは、キャッシングポリシー(たとえば、 キャッシュ容量いっぱいになれば、一番古いデータが削除されます)のために、 キャッシュが消されない限りずっと残ります。 この挙動を変えるために、set() を呼ぶときに、 有効期限パラメータを指定し、一定の期間の後、キャッシュが削除されるように する事もできます。
// 最大 30 秒間、キャッシュに値が保持される
Yii::app()->cache->set($id, $value, 30);
その後、この変数(同じ、あるいは別のウェブリクエスト中に)にアクセスする必要がある場合、 その ID を指定して get() を呼べば、キャッシュから読み込めます。 もし、返り値が false なら、値がキャッシュされていないため、 キャッシュを再生成する必要があります。
$value=Yii::app()->cache->get($id);
if($value===false)
{
// キャッシュが見つからなかったため、
// 後で利用できるように、$value のキャッシュを再生成し保存します:
// Yii::app()->cache->set($id,$value);
}
変数をキャッシュするために ID を選ぶとき、 ID がアプリケーション中でキャッシュされるかもしれない、 他の全ての変数内でユニークである事を確かめてください。 キャッシュコンポーネントでは、他のアプリケーションで同じ ID が使われていたとしても それらを区別出来るため、ID がアプリケーションを横切ってユニークである必要はありません。
キャッシュから、キャッシュされた値を削除するには、delete() を呼びます。また、全てのキャッシュを削除するには、flush() を呼びます。flush() は、他のアプリケーションのデータを含む、 全てのキャッシュデータを削除するため、このメソッドを呼ぶ際は、 細心の注意を払ってください。
ヒント: CCache は
ArrayAccess
により実装されているため、 キャッシュコンポーネントは配列のように扱えます。下記に例を示します:$cache=Yii::app()->cache; $cache['var1']=$value1; // $cache->set('var1',$value1); と同等 $value2=$cache['var2']; // $value2=$cache->get('var2'); と同等
有効期限設定に加えて、キャッシュデータも依存関係のあるデータの変更により、 無効にされるかもしれません。 たとえば、あるファイルの内容がキャッシュされており、ファイルが変更された場合、 キャッシュされたコピーを無効にし、キャッシュの代わりにファイルから 最新のデータを読み込む必要があります。
CCacheDependency か、その子クラスのインスタンスとして依存関係を表します。 set() を呼ぶ際に、キャッシュされるデータと共に、 依存関係のインスタンスを指定します。
// 値は 30 秒間有効です
// さらに、依存関係にあるファイルが変更された場合、有効期限内でも無効になります
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));
今、get() を呼び、キャッシュから $value
を取り出そうとすると、
依存関係が調査され、それが変更されていてば、データを再生成する必要が
あることを知らせるために、false 値が返ります。
以下に、利用可能なキャッシュ依存関係の概要です:
CFileCacheDependency: ファイルの最終更新日時が変更された場合、 依存関係が変更されます。
CDirectoryCacheDependency: ディレクトリや、サブディレクトリ下の ファイルのいずれかが変更された場合、依存関係が変更されます。
CDbCacheDependency: 指定された SQL 文のクエリ結果が変わった場合に、 依存関係が変更されます。
CGlobalStateCacheDependency: 指定されたグローバルステートが変更された場合に、 依存関係が変更されます。グローバルステートは、アプリケーション内での多数のリクエスト、 および、多数のセッションを横断して持続する変数です。これは、 CApplication::setGlobalState() により定義されます。
CChainedCacheDependency: チェーン上の依存関係のいずれかが変更された場合、 依存関係が変更されます。
CExpressionDependency: 指定されたPHP表現の結果が変更された場合、依存関係が変更されます。 このクラスは、バージョン1.0.4から利用できます。
Signup or Login in order to comment.