Yii Framework での CGridView のパフォーマンスに興味があります。Yiiで簡単なアプリを作りました。モデルの管理ページで、すべてのレコードを単純にリストし、ページネーション (30/ページ) とカスタム ソートを使用して、これまでのところうまく機能しています。
しかし、CGridView をレンダリングするのに 4 ~ 5 秒かかることがわかりました。30 レコードのページを 4 ~ 5 秒でレンダリングするのは正常ですか? なんか遅い気がする!列が 8 つしかない複雑なテーブルではないためです。また、生成された SQL クエリは高速に実行されます (2 ~ 3 ミリ秒で実行されます) が、いくつかの関係が含まれています。
最適化についていろいろとググったところ、次の公式ドキュメントが見つかりました: http://www.yiiframework.com/doc/guide/1.1/en/topics.performance
CGridView の問題に焦点を当て、キャッシュを使用しようとしましたが、非常に優れたヘルパーであるCOutputCacheを見つけました。
私の実践では、コントローラーの filter() 関数に COutputCache を追加します。
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
array( 'COutputCache+admin,_lists', 'duration' => 600,'varyByParam'=>array('sort','page'), ),
);
}
通常のビュー ページと部分ページを追加し、有効期限を秒単位で設定し、キャッシュの変更を検出するパラメータを Yii に伝えることができます。
これは、並べ替えやページングなど、ページに再度アクセスするときに非常に役立ちます。ページのレンダリング時間を40 ~ 50 ミリ秒に短縮できます。これはすばらしいことです。
しかし、初回のレンダリングを高速化する良い方法が見つかりませんでした。良い提案はありますか?