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