CakePHP1.2でのキャッシュ処理の覚書

1991 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2010/01/13 06:06:27 カテゴリ: PHP, CakePHP
スポンサード リンク
CakePHP

個人的に運営しているサイトがあまりにも重くサイトのパフォーマンスチューニングをしないとと思ったまま放置していましたが、そろそろやらねばってことでCakePHPのキャッシュ機能を改めて調べて実装してみました。その覚書ということで書きます。

今回の目的

サイトの全体の遅延表示の解消が主な目的です。
アクセス数も多いと20万PV/日に近づく日もあり、DBにアクセスが走るページは特に大変なことになっていました。

キャッシュの方法

DBへのアクセスを減らしてサイトのパフォーマンス向上というところを狙っているわけですが、CakePHPのキャッシュでViewキャッシュやelementキャッシュ、オブジェクトのキャッシュは利用したことはありましたが、違う形で汎用的なものはないかと調べているとBehaviorを利用してModelのメソッドをキャッシュする方法が紹介されていたのでそれを参考にしました。

モデルでキャッシュ

CacheBehaviorというBehaviorを利用してモデルのメソッドというかfindメソッドのクエリーをキャッシュするというところを使いました。

今回参考にさせて頂いたサイトは以下です。

公開されているCacheBehaviorの機能としては、以下が想定されています。

  1. モデル内の任意のメソッドの結果をキャッシュする  (コントローラーなどの呼び出し側を修正することなく実現したい)
  2. キャッシュ有効期限を指定しない場合は、変数にキャッシュする(同一のリクエスト内で有効)
  3. モデルのデータ内容に変化(追加・更新・削除)があった場合には自動的にキャッシュをクリアする
  4. コントローラーからモデルのメソッドを呼び出す際にキャッシュを実装可能にする   (とはいえ、コントローラーからも制御したい)

導入手順

1.CacheBehaviorを導入

CacheBehaviorをアプリケーションディレクトリのmodels/behaviors/cache.phpとして配置します。
ソースはこちらより
使用したいmodelに$actsAsを指定します。

class SampleModel extends Model{
	var $actsAs	= array('Cache');
  ・
  ・
  ・

上記のブログでも書いてありますが、自分も楽してapp_model.phpに書いてしまってます。

2.findメソッドのオーバーライド

app_model.phpにてfindメソッドをオーバーライドします。
今回はこちらのブログを参考にしました。

追記:10/01/13 参考にしたのだと、fieldメソッドを利用した時に引数が旨く渡らなかったので修正。色々書き方はあると思いますが、ちょっとシンプルに。まだ直すとこはありますが、とりあえず。

    function find()
    {
	$args = func_get_args();
        if ($this->Behaviors->attached('Cache')) {
            if($this->cacheEnabled()) {
                $cacheSetting = Cache::settings();
                $cacheDuration = $cacheSetting['duration'];
                return $this->cacheMethod($cacheDuration, __FUNCTION__, $args);
            }
        }
   //     $parent = get_parent_class($this);
        return call_user_func_array(array('Model', __FUNCTION__), $args);
    }


以上でOK。モデルキャッシュをmemcachedでやってみたかったですが、レンタルサーバーなのでそれは出来ず。
それは、こちらのブログで。

感想

これはいい感じです。
現在専用サーバーかVPSへの移行も考えているのですが、とりあえず簡単に導入できたのでゆっくり良いところを探してみます。

その他関連サイト

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

↑ページ上部へ

アクセスカウンター

今日 : 2 昨日 : 27

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック