簡易的に実行時間を記録するBenchmarkコンポーネントを作成、利用する方法もある。array('Benchmark');有効にするとapp/tmp/logs/bench.logというファイルにログ出力される。計測用アプリケーションを作るSlowコントローラーSlowモデルSlowビューを作成。doSomethingメソッドでsleep(5)を実行して5秒処理を停止。この状態でアクセスすると擬似的にパフォーマンスが遅くなっているのを再現できる。パフォーマンス計測するSlowコントローラーでBenchmarkコンポーネントを指定する。doSomethingメソッドの前後にmarkメソッドを記述して時間を記録する。ここまでで計測準備完了。ブラウザからアクセスするとログが記録される。次のログはSlowコントローラー読み込み後(2つめのmarkメソッド)で5.002154秒となっていたら、Slowコントローラーがボトルネックだということがわかる。効果は絶大だが工数が多くかかる、不具合がでるリスクあり。2.キャッシュ利用ボトルネック処理は遅いまま、同じ処理をキャッシュから取り出して利用する。手軽に導入でき、不具合がでるリスクは少ない。キャッシュの設定app/Config/core.phpにデフォルトという設定を記載する例。※第二引数:キャッシュの設定を連想配列で記載キャッシュの読み書き操作時に設定名を指定することで適用される。day',));|キャッシュクラスの操作キャッシュの読み書きを汎用的に行うクラス。使用方法は読み込むのみ。App::uses('Cache','Cache');書き込みwriteメソッドで3つの引数を指定する。'default');読み込みreadメソッドで2つの引数を指定。第二引数:キャッシュの設定(省略時はdefaultが指定される)存在しない、有効期限切れ、エラー時はfalseが戻り値。'default');削除deleteメソッドで2つの引数を指定。'default');Cacheクラスを実際に使ってみる設定AppクラスのusesメソッドでCacheクラス読み込み。次にdoSomethingメソッドでキャッシュ読み込み。キャッシュが存在すればキャッシュの値を返して処理終了。キャッシュが存在しなければ処理を続行する。$ret;}}|キャッシュのログで動作確認ブラウザで2回アクセスする。1回目は現在時刻が表示。2回目は1回目と同じ時刻が表示される。ログ/app/tmp/logs/bench.logにて確認できる。ビューキャッシュを使ったパフォーマンス改善ビューに特化したキャッシュ。Cacheクラスはアプリケーションで記述必要だが設定すればコード不要でキャッシュ操作してくれるので手軽。ビューキャッシュ有効化デフォルトでは無効のため、下記の行をコメント外す。app/Config/core.phpConfigure::write('Cache.check',true);次にコントローラーの$helpersプロパティにCacheヘルパーを指定。array('Cache');ビューキャッシュ設定コントローラーで行う。$cacheActionプロパティに設定を連想配列で指定する。indexアクションを1時間、viewアクションを10分間キャッシュする例。minute',);コントローラー中の全アクションに指定する場合はキーを指定しない。下記のようにするのみ。有効期限切れそのビューキャッシュを出力する際、自動でキャッシュ削除される。ビューキャッシュ出力されないままアクションが実行される。その後、設定に応じてキャッシュ生成される。Configure::read('Cache.check')がtrueの時のみ実行。自動でビューキャッシュ削除される。Slowモデルのsaveメソッド実行すると、Slowコントローラーのビューキャッシュが削除される。routes.phpでルーティング変更している場合は削除されないことがある。Configure::read('Cache.check')がtrueの時のみ実行。任意でビューキャッシュを削除できる。Slowコントローラーのビューキャッシュを削除する場合は下記。clearCache('slow');全てのビューキャッシュ削除する場合は下記。clearCache();ビューキャッシュを実際に使う設定core.phpでビューキャッシュを有効にする。次にSlowコントローラーで設定。hour');}|動作確認ブラウザから2回アクセス。2回目では1回目の時刻が表示される。app/tmp/logs/bench.logを確認。2回目のログは記録されてない。これは出力するキャッシュが存在する場合、アプリケーション実行せずにキャッシュの出力のみ行う。これによりパフォーマンス改善される。※ただしデバッグレベル1以上にするとフッタに実行時間が記録される。»プロフィールid:hiromode某PR会社勤務。2015年からフロントエンド従事。自分でサービスを作り流行らせるのが目標。主なスキルはHTML,CSS,JavaScript(Vue.js、jQuery),インフラ(AWS、VPS)、CakePHP、Gitなど。備忘録アイデアのつくり方を読んだメモAWSからのメールが迷惑メールになるときWordpress+S3+Cloudfrontで実現する、冗長構成対応の画像配信とメディアアップロードしてS3保存Wordpress等のサイトが500エラーで突然見れなくなった時に疑うメモリ不足とSwap領域について月別アーカイブはてなブログをはじめよう!hiromodeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。