キャッシュの仕組みZend_Cache には、3 つのポイントがあります。まず最初は一意な ID (文字列) で、 これによってキャッシュレコードを識別します。二番目は、例に含まれる 'lifetime' ディレクティブです。これは、キャッシュされたリソースの 「賞味期限」を定義するものです。三番目のポイントとなるのが条件付きの実行処理で、 不要なコードを完全に読み飛ばすことで処理速度を向上させることになります。 フロントエンドの主となる関数 (例えば Zend_Cache_Core::get()) は、キャッシュがヒットしなかった場合には常に FALSE を返すよう設計されています。 そのため、キャッシュしたい (そして読み飛ばしたい) 部分を if(){ ... } 文で囲む際に、 条件式として Zend_Cache のメソッド自身を使用できるようになっています。 このブロックの最後では、出力内容を (例えば Zend_Cache_Core::save() などで) 保存する必要があります。
Zend_Cache ファクトリメソッド使用可能な Zend_Cache フロントエンドのインスタンスを作成する方法を、 以下の例で示します。
これ以降のドキュメントでは、$cache の中身が有効なフロントエンドになっているものとします。また、 選択したバックエンドにパラメータを渡す方法は理解できているものとします。
レコードのタグ付けタグは、キャッシュレコードを分類するための仕組みです。 save() メソッドでキャッシュを保存する際に、 適用するタグを配列で指定できます。これを使用すると、 指定したタグが設定されているキャッシュレコードのみを削除するといったことが可能となります。
キャッシュの削除特定のキャッシュ ID を削除/無効化するには、 remove() メソッドを使用します。
一回の操作で複数のキャッシュ ID を削除/無効化するには、 clean() メソッドを使用します。例えば、すべてのキャッシュレコードを削除するには次のようにします。
タグ 'tagA' および 'tagC' に該当するキャッシュエントリを削除するには、このようにします。
タグ 'tagA' にも 'tagC' にも該当しないキャッシュエントリを削除するには、このようにします。
タグ 'tagA' または 'tagC' に該当するキャッシュエントリを削除するには、このようにします。
削除モードとして指定可能な値は CLEANING_MODE_ALL、CLEANING_MODE_OLD、 CLEANING_MODE_MATCHING_TAG、CLEANING_MODE_NOT_MATCHING_TAG および CLEANING_MODE_MATCHING_ANY_TAG です。 後者は、その名が示すとおり、タグの配列と組み合わせて使用します。
|