Dengan perkembangan pesat Internet, data berkembang dengan lebih pantas dan pantas. Dalam aplikasi web, halaman data adalah salah satu alat yang diperlukan untuk meningkatkan pengalaman pengguna. Dalam rangka kerja Yii, halaman data mudah dilaksanakan. Artikel ini akan memperkenalkan halaman data dalam rangka kerja Yii dan cara mengoptimumkan paparan data apabila jumlah data adalah besar.
1. Paging data dalam rangka kerja Yii
1.1 Kelas paging
Dalam rangka kerja Yii, fungsi paging dikapsulkan dalam kelas CPagination. Kelas CPagination menyediakan kaedah biasa berikut:
- setPageVar: Tetapkan nama parameter paging, lalainya ialah 'halaman'; >
getItemCount : Dapatkan bilangan item data; - getLimitOffset: Dapatkan penyata LIMIT... OFFSET...
- getPages: Dapatkan kod HTML halaman.
-
- 1.2 Menggunakan CPagination
Andaikan kita mempunyai Pengguna model pengguna, yang mempunyai 10,000 keping data yang perlu dipaparkan dalam halaman. Pertama, kita perlu membuat instantiate objek CPagination dalam kaedah actionIndex dalam UserController:
$pagination = new CPagination(10000);
Kemudian, kita boleh menetapkan jumlah data untuk setiap halaman:
$pagination->pageSize = 20;
Atau gunakan nilai lalai:
$pagination->pageSize = Yii::app()->user -> ;pageSize;
Seterusnya, kita perlu mengira nombor halaman semasa:
$pagination->setCurrentPage($_GET['page']);
Akhir sekali, kami Data yang akan dipaparkan perlu diperolehi berdasarkan nombor halaman semasa dan jumlah data pada setiap halaman:
$users = User::model()->findAll(array(
'limit' => $pagination->getLimit(),
'offset' => $pagination->getOffset(),
Salin selepas log masuk
));
Akhir sekali, kita juga perlu menggunakan kaedah getPages dalam fail paparan untuk mendapatkan kod HTML halaman:
<?php $this->widget('CLinkPager', array(
'pages' => $pagination,
)); ?>
Salin selepas log masuk
2. Optimumkan paparan data
Apabila jumlah data adalah besar, kaedah halaman konvensional boleh menyebabkan pemuatan halaman menjadi perlahan dan pengalaman pengguna menurun. Berikut ialah dua cara untuk mengoptimumkan paparan data.
2.1 paging Ajax
Menggunakan paging Ajax boleh mengelakkan masalah menyegarkan keseluruhan halaman setiap kali anda menukar halaman. Apabila pengguna mengklik pada pautan paging, permintaan Ajax dihantar untuk mengemas kini hanya bahagian yang perlu dikemas kini, meningkatkan kelajuan penyegaran halaman.
$penomboran = new CPagination(10000);
$penomboran->pageSize = 20;
$penomboran->setCurrentPage($_GET['halaman']);
$this->render('index', array(
'users' => User::model()->findAll(array(
'limit' => $pagination->getLimit(),
'offset' => $pagination->getOffset(),
)),
'pagination' => $pagination,
Salin selepas log masuk
));
Dalam fail paparan, kami menggunakan yii-ajax-linkpager-widget untuk menggantikan kawalan CLinkPager . Apabila pengguna mengklik pada pautan halaman, gunakan Ajax untuk mengemas kini data:
<?php $this->renderPartial('_userlist', array('users' => $users)); ?>
Salin selepas log masuk
Dalam folder _controller, kita perlu menambah method actionPage, di mana permintaan paging diproses:
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));
Salin selepas log masuk
}
2.2 Caching data paging
Caching data paging ke pelayan cache boleh meningkatkan prestasi halaman dengan sangat baik. Apabila pengguna meminta data paging, mula-mula semak sama ada pelayan cache mempunyai data cache, dan jika ya, kembalikan data secara terus jika tidak, tanya pangkalan data, simpan data dalam pelayan cache, dan kemudian kembalikan data;
Kita boleh menggunakan mekanisme caching yang disediakan oleh rangka kerja Yii. Gunakan COutputCache dalam kaedah actionIndex pengawal untuk cache data bernombor:
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();
}
Salin selepas log masuk
}
Apabila pengguna meminta data bernombor, Jika dicache data wujud dalam pelayan cache, data cache dikembalikan secara langsung jika tidak, pangkalan data ditanya, data disimpan dalam pelayan cache, dan data dikembalikan.
Ringkasnya, fungsi halaman data dalam rangka kerja Yii mudah dilaksanakan dan menyokong pelbagai kaedah pengoptimuman, yang boleh meningkatkan pengalaman pengguna aplikasi web dengan banyak. Sama ada sejumlah kecil data atau sejumlah besar data, halaman data boleh dilaksanakan dengan mudah.
Atas ialah kandungan terperinci Paging data dalam rangka kerja Yii: Mengoptimumkan paparan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!