Rumah  >  Artikel  >  rangka kerja php  >  Paging data dalam rangka kerja Yii: Mengoptimumkan paparan data

Paging data dalam rangka kerja Yii: Mengoptimumkan paparan data

WBOY
WBOYasal
2023-06-21 13:51:05941semak imbas

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(),

));

Akhir sekali, kita juga perlu menggunakan kaedah getPages dalam fail paparan untuk mendapatkan kod HTML halaman:

dc6dce4a544fdca2df29d5ac0ea9906b

<?php $this->widget('CLinkPager', array(
    'pages' => $pagination,
)); ?>

16b28748ea4df4d9c2150843fecfba68

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,

));

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:

d44d5cbb027ad62f803fefd2a6a7996a

<?php $this->renderPartial('_userlist', array('users' => $users)); ?>

16b28748ea4df4d9c2150843fecfba68

389ecfc928ec06e224ceb533b61fd4be

<?php $this->widget('ext.yii-ajax-linkpager-widget.EAjaxLinkPager', array(
    'ajaxUpdate' => 'userlist',
    'pages' => $pagination,
)); ?>

16b28748ea4df4d9c2150843fecfba68

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));

}

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();
}

}

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn