ビューキャッシュとDebugKitプラグインの関係
まず、ビューキャッシュを導入しました。
導入方法は基本的に、ネット上あちこちにある紹介の通りなのですが、一箇所トラブルがありました。
DebugKitプラグインが動作していると、ビューキャッシュされません。
core.phpでdebug設定を0にすれば解決ですが、開発環境でハマりました。
DebugKitプラグインは極めて有効な開発ツールですが、こんな落とし穴があったとは・・・
ポイントは、cake/libs/view/view.phpの453行目でした。
if (substr($layoutFileName, -3) === 'ctp' || substr($layoutFileName, -5) === 'thtml') { $this->output = View::_render($layoutFileName, $data_for_layout, $loadHelpers, true); } else { $this->output = $this->_render($layoutFileName, $data_for_layout, $loadHelpers); }
通常だと、$layoutFileNameは
/[PATH]/app/views/layouts/default.ctp
ですが、DebigKitが有効だと、
/[PATH]/app/views/layouts/default.debug_view
となるため、「拡張子が.ctp/.hthtmlではない」と判断。
_render()の第4引数 $cached が、デフォルト値の falseで実行されるため、キャッシュが生成されていませんでした。
CakePHPのdebug設定を0にすればDebugKitも無効となり、上記問題は発生しませんが、開発環境では要注意です。
情報収集中に見たサイトで、「テンプレートの拡張子をカスタム変更してるとビューキャッシュされない」という記事がありました。
問題の原因は違いますが、まさに同じ箇所でトラップされていました・・・
pblo | ぴーぶろ : webデベロッパーの勉強メモとか