インターネットの急速な発展に伴い、データの増加速度もますます速くなっています。 Web アプリケーションでは、データ ページングはユーザー エクスペリエンスを向上させるために必要なツールの 1 つです。 Yii フレームワークでは、データ ページングを簡単に実装できます。この記事では、Yii フレームワークにおけるデータ ページングと、データ量が多い場合にデータ表示を最適化する方法を紹介します。
1. Yii フレームワークでのデータ ページング
1.1 ページング クラス
Yii フレームワークでは、ページング関数は CPagination クラスにカプセル化されています。 CPagination クラスは、次の共通メソッドを提供します:
1.2 CPagination の使用
ユーザー モデル User があり、ページに表示する必要があるデータが 10,000 個あるとします。まず、UserController の actionIndex メソッドで CPagination オブジェクトをインスタンス化する必要があります:
$pagination = new CPagination(10000);
次に、各ページのデータ量を設定できます。
$pagination->pageSize = 20;
またはデフォルト値を使用します:
$pagination->pageSize = Yii::app()->user -> ;pageSize;
次に、現在のページ番号を計算する必要があります:
$pagination->setCurrentPage($_GET['page']);
最後に、表示するデータは、現在のページ番号と各ページのデータ量に基づいて取得する必要があります。
$users = User::model()->findAll(array(#) ##
'limit' => $pagination->getLimit(), 'offset' => $pagination->getOffset(),
widget('CLinkPager', array( 'pages' => $pagination, )); ?>
#$pagination = new CPagination(10000);
$pagination->pageSize = 20;$pagination->setCurrentPage($_GET['page']);
$this->render('index', array(
'users' => User::model()->findAll(array( 'limit' => $pagination->getLimit(), 'offset' => $pagination->getOffset(), )), 'pagination' => $pagination,
));
ビュー ファイルでは、yii-ajax-linkpager-widget を使用して CLinkPager コントロールを置き換えます。 。ユーザーがページング リンクをクリックすると、Ajax を使用してデータが更新されます:
renderPartial('_userlist', array('users' => $users)); ?>
widget('ext.yii-ajax-linkpager-widget.EAjaxLinkPager', array( 'ajaxUpdate' => 'userlist', 'pages' => $pagination, )); ?>
_controller フォルダーに、ページング要求が処理されるメソッド actionPage を追加する必要があります。
public function actionPage()
{// 处理分页请求,返回分页数据 $pagination = new CPagination(10000); $pagination->pageSize = 20; $pagination->setCurrentPage($_GET['page']); $users = User::model()->findAll(array( 'limit' => $pagination->getLimit(), 'offset' => $pagination->getOffset(), )); $this->renderPartial('_userlist', array('users' => $users));
2.2 ページング データのキャッシュ
ページング データをキャッシュ サーバーにキャッシュすると、ページングのパフォーマンスが大幅に向上します。ユーザーがページング データを要求すると、まずキャッシュ サーバーにデータがキャッシュされているかどうかを確認し、キャッシュされている場合はデータを直接返します。そうでない場合は、データベースにクエリを実行し、データをキャッシュ サーバーに保存してからデータを返します。
Yii フレームワークによって提供されるキャッシュ メカニズムを使用できます。コントローラーの actionIndex メソッドで COutputCache を使用して、ページング データをキャッシュします。
public function actionIndex()
{// 缓存时间为10分钟 $cacheId = __CLASS__.__METHOD__.md5(Yii::app()->user->id); $cacheTime = 10*60; if(!$this->beginCache($cacheId, array( 'duration' => $cacheTime, ))) { $pagination = new CPagination(10000); // ... $users = User::model()->findAll(array( 'limit' => $pagination->getLimit(), 'offset' => $pagination->getOffset(), )); $this->render('index', array( 'users' => $users, 'pagination' => $pagination, )); $this->endCache(); }
ユーザーがページング データをリクエストしたとき、キャッシュの場合データがキャッシュ サーバーに存在する場合は、キャッシュ データが直接返されます。そうでない場合は、データベースがクエリされ、データがキャッシュ サーバーに格納されて、データが返されます。
要約すると、Yii フレームワークのデータ ページング機能は実装が簡単で、さまざまな最適化方法をサポートしているため、Web アプリケーションのユーザー エクスペリエンスを大幅に向上させることができます。少量のデータでも大量のデータでも、データ ページングを簡単に実装できます。
以上がYii フレームワークでのデータページング: データ表示の最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。