ビューキャッシュと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デベロッパーの勉強メモとか