Neo Inspiration

Avatar

中の人:jakkrokk (HN統一しました) がphp,javascript,air,flex などなど好き勝手書いてます。仕事は主にWEBシステムの設計と開発、SEO全般など。

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/”;
}

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

Smarty と cakePHP でキャッシュを効かす方法

を誰か教えてくださいorz

自分なりの対策をした結果だけ書いておきますが、
正しいやり方ではないと思っていることだけは明記しておきます。

(続きを読む…)

cakephp で一つの controller からコンテンツを量産する方法

うまいタイトルが思いつかなかった。。

どういうことかというと
全体レイアウトに Element を使っていたりして
Element に「同じ」動的データを渡したくて、かつ中身はファイルごとに替えたい場合
毎回 controller を作って view を作るのはだるい!!!

ということです。

(続きを読む…)

Continue Next page

Twitter