Cache::write でなんでもキャッシュする

rytich2009-04-23

CakePHP1.2 で WEB API の情報なんかをキャッシュしたい時に Cache::write を使うと楽チンでした

http://book.cakephp.org/ja/view/764/Cache

if(($content = Cache::read('content')) === false) { //有効なキャッシュがあるか
    $content = file_get_contents($url); //キャッシュがないのでとってくる
    Cache::write('content', $content, array('duration' => '+5 minutes')); //5分間キャッシュ
}

追記: Cache::write の duration は Cache::set を使ったほうがいいみたいでした

    Cache::set(array('duration' => '+5 minutes')); 
    Cache::write('content', $content);

これで 5分以内であればキャッシュを使用して、それ以上だと$urlに内容を取りに行きます
キャッシュの保存先は Cache::config で設定したとこっぽい

最初オブジェクトをキャッシュしようとしたら Cache::read の時に 「unserialize できない!」となったので連想配列にしてからキャッシュしたら大丈夫でした!

追記: くわしくはこちら CakePHP cache()はCache::write()に - Shin x blog