管理されたホストで centOS を実行している古いサーバーから、AWS で Ubuntu を実行している新しいサーバーに移動しました。
アイテムのリストをロードするページのレンダリングに 10 ~ 12 秒 (場合によっては最大 74 秒) かかっていることに気付きました。これは、古いサーバーではまったく気付かれませんでした。私は newrelic を使用して何がそんなに時間がかかっているのかを調べたところ、sfPHPView->render() に 99% の時間がかかっていることがわかりました。nerelic からは、ページをレンダリングするために DB に対して約 500 回の呼び出しが行われます。
このページはアイデアのリストで、各アイデアが行になっています。Doctrine 1.2 の $idea->getAccounts()->getSlug() 機能を使用します。アカウントは、対外関係としてのアイデアにリンクされた別のテーブルです。これは、アイデア行ごとに数回呼び出されます。各行要素のコードを保持するためにパーシャルは現在使用されていません。
- 行要素にパーシャルを使用すると、パフォーマンス上の利点はありますか? (今のところ、コードの保守性の利点を無視しています)
- 外部リレーションを介して接続されたデータを参照するためのベスト プラクティスは何ですか? $idea->getAccounts()->getSlug() が呼び出されるたびに DB に呼び出しが行われることに驚いています。
- そうでなければ、sfPHPView->render() の実行が centOS よりも遅くなる ubuntu に明らかなことはありますか?