S eda1a14b50ee24bcab19b62f40858e76 Zend_Cache

Frontend(キャッシュ対象)は指定のクラスやファイルやページや出力などが指定できる。
Backend(キャッシュ保管場所)はファイルやmemcachedやDBなどが使える。

Zend_Cache_Frontend_Page

ページまるまるキャッシュする。なかなか便利。

導入方法
http://d.hatena.ne.jp/noopable/20090326/12...

これ、$cahce->start()するだけっていうのがどんな仕組みで動いてるのか不思議だったけど、ソース見て一目瞭然。ob_startにコールバック指定できて、flushしたときに同時にキャッシュ保存してるだけだった。

Controller内で使う場合はFrontで'disableOutputBuffering'をtrueにしなければならない。でないと空のデータがキャッシュされてしまう。

バッファリングにob_startを使ってるんだろう。ob_startはネストできないのでどちらか切らなければならない。バッファリングをoffにするとコントローラー内でechoしたものが先にでてくる。他に弊害あるかな?
// http://www.zfforums.com/zend-framework-components-13/core-infrastructure-19/help-zend_cache_frontend_page-1180.html

$front->setParam('disableOutputBuffering', true);


Zend_Configをキャッシュするサンプル

require_once 'Zend/Config/Ini.php';
require_once 'Zend/Cache.php';

$file = 'config.ini';
$frontendOptions = array(
   'lifetime' => 7200, // キャッシュの有効期限を 2 時間とします
   'automatic_serialization' => true,
    'master_file' => $file
);

$backendOptions = array(
    'cache_dir' => './tmp/' // キャッシュファイルを書き込むディレクトリ
);

// Zend_Cache_Core オブジェクトを取得します
$cache = Zend_Cache::factory('File', 'File', $frontendOptions, $backendOptions);

if (!$config = $cache->load('config')){
    //$options['nestSeparator'] = ':';
    $config = new Zend_Config_Ini($file, null, array('allowModifications' => true));
    $cache->save($config, 'config');
}else{
    echo "use cache\n";
}

var_dump($config->toArray());

もしかして

    他の人の「Zend_Cache」

    S eda1a14b50ee24bcab19b62f40858e76

    無所属ソフトウェアエンジニア

    (1722words)

    最新

      最新エントリ