Cacheについて

ZF-Exではキャッシュを処理するためのモジュールとしてZend Cacheを使用しています。初期化したオブジェクトをZend Registryに保存しているため、処理中のどのクラスでもキャッシュを利用可能です。Zend Cacheの詳細はこちらを参照ください。

http://framework.zend.com/manual/ja/zend.cache.html

Cacheの設定方法

Cacheの保存期間はparams.ini中のcache_lifetimeにより設定します。デフォルトでは2時間と設定されています。

ControllerやModelクラスでの使用方法

コントローラやモデルの場合、メンバ変数としてキャッシュのインスタンスが生成されています。そのため、コントローラやモデルでキャッシュを扱う場合はメンバ変数より呼び出します。

public function getTestData(){
    $cache_id = 'test_data';
    $data = $this->_cache->load($cache_id);

    if($data !== false){
        return $data;
    }

    $data = array('data_1', 'data_2', 'data_3');

    $this->_cache->save($data);
    return $data;
}

ControllerやModelクラス以外での使用方法

他のクラスでキャッシュを使用する場合はZend Registryからオブジェクトを取得した上で呼び出す必要があります。オブジェクトの呼び出しが異なるだけで、キャッシュの呼び出しや保存の方法は同じです。

public function getTestData(){
    $cache = Zend_Registry::get('Cache');
    $cache_id = 'test_data';
    $data = $cache->load($cache_id);

    if($data !== false){
        return $data;
    }

    $data = array('data_1', 'data_2', 'data_3');

    $cache->save($data);
    return $data;
}

Cacheの使用されている箇所

ZF-Exの初期状態では次の箇所でキャッシュが使用されるようになっています。

ModelのgetListメソッド

AppModel::getListメソッドはDBよりデータを配列化して取得するメソッドですが、これをオプションによりキャッシュ化する事が可能です。モデル中のメンバ変数$_list_cacheをtrueとする事により、そのモデルでキャッシュを利用するようになります。キャッシュidはgetList_(モデル名)_(キー名)_(値名)となります。

My_Translate

My_Translateで使用する、Zend_Translateのトランスレータオブジェクトは自動的にキャッシュが生成されます。キャッシュidは全てのメッセージを読み込む場合はtranslate、特定のファイルのみの場合はtranslate_(ファイル名)となります。

Cacheファイルの手動削除

管理画面上にキャッシュの削除機能があるため、手動で削除したい場合はそこより実行可能です。詳しくはキャッシュの削除の項目を参照下さい。また、キャッシュファイルは以下のディレクトリに保存されているため、直接ファイルを削除したい時はこのディレクトリ配下のファイルを削除して下さい。

  • tmp
    • cache