人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CakePHPのキャッシュについて。

CakePHP1.1系で、キャッシュ機能を使っていますが、
トップページのキャッシュが生成されません。
他のページはキャッシュ生成・削除共にできました。

トップページのキャッシュ生成方法で、参考になるサイトやアドバイス頂けますと助かります。

●質問者: onigirin
●カテゴリ:インターネット ウェブ制作
✍キーワード:CakePHP アドバイス キャッシュ サイト トップページ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Numeric
●35ポイント

"/アクション名/"は、そのままではキャッシュされません。(キャッシュヘルパーが名前を付けられないため)

回避するには、以下のように手動でキャッシュを設定してください。


CakePHP Main Page Caching Workaround

class NotesController extends AppController
{
 var $helpers = array( 'Cache' );

 // Home action
 function home()
 {
 // Cache this action manually.
 $this->cacheAction = '1 day';

 /** Rest of the action....*/
 }
}
◎質問者からの返答

どうもありがとうございます。

var $helpers = array( 'Cache' );

toppageのfunctionの中に

$this->cacheAction = '1 day';

を入れましたが、キャッシュは生成されませんでした・・・。

http://xxx.com/toppage/

等にするとキャッシュされますが、

http://xxx.com/

の場合は、キャッシュされませんでした。

(toppageコントローラが、トップページを表示しています)


2 ● Numeric
●35ポイント ベストアンサー

遅くなってすみません。再回答いたします。


Neo Inspiration - CakePHP 1.2で トップページにキャッシュを入れるによると、

$_SERVER['REQUEST_URI'] を convertSlash したものがキャッシュ名になるので、

http://www.a.com/ の場合の REQUEST_URI = / を convertSlash した null がキャッシュファイル名になってしまうわけです。

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


ということだそうです。(これは1.2系の記事ですが1.1系も同じ)


解決策は以下の通り。


/cake/bootstrap.php の Line90の

$filename=CACHE . 'views' . DS . convertSlash($uri) . '.php';

この文の上にこれを付け足す

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

※修正対象ファイル名および行数を1.1系用に修正しました

◎質問者からの返答

どうもありがとうございます。

無事キャッシュできました!

本当に助かりました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ