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


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

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

回答の条件
  • 1人10回まで
  • 登録:2008/09/01 12:40:37
  • 終了:2008/09/07 15:40:15

ベストアンサー

id:Numeric No.2

Numeric回答回数83ベストアンサー獲得回数182008/09/05 21:01:44

ポイント35pt

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


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系用に修正しました

id:onigirin

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

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

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

2008/09/07 15:40:09

その他の回答(1件)

id:Numeric No.1

Numeric回答回数83ベストアンサー獲得回数182008/09/01 18:20:58

ポイント35pt

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

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


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....*/
    }
}
id:onigirin

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

var $helpers = array( 'Cache' );

toppageのfunctionの中に

$this->cacheAction = '1 day';

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

http://xxx.com/toppage/

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

http://xxx.com/

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

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

2008/09/02 17:08:38
id:Numeric No.2

Numeric回答回数83ベストアンサー獲得回数182008/09/05 21:01:44ここでベストアンサー

ポイント35pt

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


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系用に修正しました

id:onigirin

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

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

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

2008/09/07 15:40:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません