Zend_Cache のフロントエンドZend_Cache_Core導入Zend_Cache_Core は特別なフロントエンドであり、 モジュールのコアに含まれています。これはキャッシュフロントエンドの 基本機能を実装したものであり、他のクラスによってオーバーライドされます。
使用可能なオプションこれらのオプションを、先の例で示したようにファクトリメソッドに渡します。
例マニュアルのいちばんはじめのほうに、例を示しています。 もしキャッシュに文字列しか保存しないのなら ("automatic_serialization" オプションを使用すると boolean も保存できるので)、 このようにもう少しコンパクトに作成することが可能です。
複数のブロックやデータのインスタンスをキャッシュしたい場合も、考え方は同じです。
特殊な値 (boolean 値に "automatic_serialization" オプションを指定したものなど) や空の文字列をキャッシュしたい場合は、 上で示したコンパクトな例を使用することはできません。 キャッシュレコードを正式に調べる必要があります。
Zend_Cache_Frontend_Output導入Zend_Cache_Frontend_Output は、出力を横取りするフロントエンドです。 これは PHP の出力バッファリング処理を使いやすくしたもので、 start() メソッドと end() メソッドの間の出力を横取りします。 使用可能なオプションZend_Cache_Core のオプション以外に、 このフロントエンドが独自に使用するオプションはありません。 例このマニュアルの冒頭に示した例とほとんど同じですが、少しだけ変更を加えています。
この形式を使用すると、既存のプロジェクトに簡単に出力キャッシュ処理を追加できます。 コードのリファクタリングもほとんど行わずにすませられるでしょう。 Zend_Cache_Frontend_Function導入Zend_Cache_Frontend_Function は、関数コールの結果をキャッシュします。 call() というメソッドを保持しており、 関数名とパラメータを配列にしてこのメソッドに渡します。 使用可能なオプション
例call() 関数の使用法は、PHP の call_user_func_array() と同じです。
Zend_Cache_Frontend_Function は、 関数の返り値だけでなく関数内部での出力もキャッシュします。
Zend_Cache_Frontend_Class導入Zend_Cache_Frontend_Class は、Zend_Cache_Frontend_Function と異なり、オブジェクトおよびスタティックメソッドのコールをキャッシュします。 使用可能なオプション
例例えば、スタティックメソッドのコールをキャッシュするには次のようにします。
通常のメソッドのコールをキャッシュするには次のようにします。
Zend_Cache_Frontend_File導入Zend_Cache_Frontend_File は、マスタファイルの 「更新時刻」にもとづいて動作するフロントエンドです。 これは、例えば設定ファイルやテンプレートなどで有効に使えるでしょう。 複数のマスタファイルを使用することもできます。 例えば、XML の設定ファイルを使用しており、それが「設定オブジェクト」 (Zend_Config など) を返す関数でパースされるとしましょう。 Zend_Cache_Frontend_File を使用すると、その「設定オブジェクト」 をキャッシュすることができ (これにより、 XML ファイルを毎回パースする必要がなくなります)、さらに「マスタファイル」 との間で強力な依存性を保持できます。そのため、XML 設定ファイルが更新されると、即時にキャッシュが無効になります。 使用可能なオプション
例このフロントエンドの使用法は Zend_Cache_Core と同じです。 そのため、特に例は用意していません。唯一しなければならないことは、 ファクトリを使用する際に、バックエンドのオプションとして master_file を設定することだけです。 Zend_Cache_Frontend_Page導入Zend_Cache_Frontend_Page は Zend_Cache_Frontend_Output と似ていますが、ページ全体をキャッシュする目的で設計されています。 Zend_Cache_Frontend_Page を使用して、 ページの一部だけをキャッシュすることはできません。 一方、「キャッシュ ID」は自動的に生成されます。この ID は、 $_SERVER['REQUEST_URI'] および (オプションの設定によっては) $_GET、$_POST、$_SESSION、 $_COOKIE、$_FILES をもとにして生成されます。 さらに、ひとつのメソッド ( start()) をコールするだけで使用できます。 end() は、ページの終了時に自動的にコールされます。 現時点ではまだ実装されていませんが、将来は HTTP conditional システムを追加する予定です。 これにより、ネットワークの帯域を節約できるようになります (キャッシュにヒットし、かつブラウザがそのバージョンを既に持っている場合に HTTP 304 Not Modified を送信するようにします)。
使用可能なオプション
例Zend_Cache_Frontend_Page の使用法は、きわめて簡単です。
もう少し複雑な例を見てみましょう。これは、起動ファイル (例えば Zend_Controller など) 内でキャッシュを集中管理する方法を示したものです。
キャンセル用のメソッド設計上の理由から、場合によっては (HTTP 200 以外のコードを使用する場合など) 現在のキャッシュ処理をキャンセルする必要が生じることもあります。 そこで、このフロントエンド用に cancel() メソッドを用意しました。
Zend_Cache_Frontend_Capture導入Zend_Cache_Frontend_Capture is like Zend_Cache_Frontend_Output but designed for a complete page. It's impossible to use Zend_Cache_Frontend_Capture for caching only a single block. This class is specifically designed to operate in concert only with the Zend_Cache_Backend_Static backend to assist in caching entire pages of HTML / XML or other content to a physical static file on the local filesystem. Please refer to the documentation on Zend_Cache_Backend_Static for all use cases pertaining to this class.
|