Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • CakePHP 1.2で トップページにキャッシュを入れる

    あちこちみてたんですが、やっぱりコアに手を入れるしかなさそう。

    1.1だとこれかな。
    http://raminasser.com/category/cakephp/

    >>一応対策は書きましたが、 コアをいじらないでできる方法があったら教えて欲しいです。

    問題は2点

    1個目はCache読み込み部分

    /cake/dispatcher.php の Line638
    $filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;

    ようは $_SERVER['REQUEST_URI'] を convertSlash したものがキャッシュ名になるので、
    http://www.a.com/ の場合の REQUEST_URI = / を convertSlash した null がキャッシュファイル名になってしまうわけです。

    なのでエラーになってキャッシュが読み込めない。

    2個目はCacheロード部分

    /cake/view/view.php の Line808
    $cache->here = $this->here;

    ようは dispatcherで作成された $this->here を持ちまわしてそのままファイル名にするわけです。
    なので、キャッシュを書き出すだけ(読み込まない)でよいのなら
    controllerに

    $this->here = “/コントローラ名/”;

    をつけたすだけでOKです。

    まあ これじゃあ役に立たないので・・・

    ちゃんとキャッシュが動くようにすると

    こうなります。

    /cake/dispatcher.php の Line638の
    $filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;
    この文の上にこれを付け足す

    //例は toppages_controller を / にしている場合
    if($_SERVER['REQUEST_URI']==”/”){
    $url = “toppages”;
    $this->here = “/toppages/”;
    }

    コアライブラリにハードコーディングですが、これで / もキャッシュできるようになります。


    Leave a Reply

    2008/10/13 06:04:14