Heim  >  Artikel  >  PHP-Framework  >  Daten-Paging im Yii-Framework: Optimierung der Datenanzeige

Daten-Paging im Yii-Framework: Optimierung der Datenanzeige

WBOY
WBOYOriginal
2023-06-21 13:51:05958Durchsuche

Mit der rasanten Entwicklung des Internets wachsen die Daten immer schneller. In Webanwendungen ist Daten-Paging eines der notwendigen Tools zur Verbesserung der Benutzererfahrung. Im Yii-Framework ist Daten-Paging einfach zu implementieren. In diesem Artikel wird das Daten-Paging im Yii-Framework vorgestellt und erläutert, wie die Datenanzeige bei großen Datenmengen optimiert werden kann.

1. Daten-Paging im Yii-Framework

1.1 Paging-Klasse

Im Yii-Framework ist die Paging-Funktion in der CPagination-Klasse gekapselt. Die CPagination-Klasse stellt die folgenden allgemeinen Methoden bereit:

  • setPageVar: Legen Sie den Paging-Parameternamen fest, der Standardwert ist „page“;
  • getItemCount: Rufen Sie die Anzahl der Datenelemente ab;
  • getLimitOffset: Holen Sie sich die LIMIT.. OFFSET...-Anweisung;
  • getPages: Holen Sie sich den Paging-HTML-Code.
  • 1.2 CPagination verwenden
Angenommen, wir haben ein Benutzermodell „Benutzer“, das über 10.000 Daten verfügt, die auf Seiten angezeigt werden müssen. Zuerst müssen wir das CPagination-Objekt in der actionIndex-Methode in UserController instanziieren:

$pagination = new CPagination(10000);

Dann können wir die Datenmenge für jede Seite festlegen:

$pagination->pageSize = 20;

Oder verwenden Sie den Standardwert:

$pagination->pageSize = Yii::app()->user->pageSize;

Als nächstes müssen wir die aktuelle Seitenzahl berechnen:

$pagination- >setCurrentPage($_GET['page']);

Schließlich müssen wir die anzuzeigenden Daten basierend auf der aktuellen Seitennummer und der Datenmenge auf jeder Seite abrufen:

$users = Benutzer ::model()->findAll (array(

'limit' => $pagination->getLimit(),
'offset' => $pagination->getOffset(),

));

Schließlich müssen wir auch die getPages-Methode in der Ansichtsdatei verwenden, um den Paging-HTML-Code zu erhalten:

dc6dce4a544fdca2df29d5ac0ea9906b

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

16b28748ea4df4d9c2150843fecfba68

2. Datenanzeige optimieren

Wenn die Datenmenge groß ist, kann die herkömmliche Paging-Methode dazu führen, dass das Laden der Seite langsam ist und die Benutzererfahrung beeinträchtigt wird. Hier sind zwei Möglichkeiten, die Datenanzeige zu optimieren.

2.1 Ajax-Paging

Durch die Verwendung von Ajax-Paging kann das Problem vermieden werden, dass bei jedem Seitenwechsel die gesamte Seite aktualisiert wird. Wenn der Benutzer auf den Paging-Link klickt, wird eine Ajax-Anfrage gesendet, um nur den Teil zu aktualisieren, der aktualisiert werden muss, wodurch die Geschwindigkeit der Seitenaktualisierung erheblich erhöht wird.

$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,

));

In der Ansichtsdatei verwenden wir yii-ajax-linkpager-widget, um das CLinkPager-Steuerelement zu ersetzen. Wenn der Benutzer auf den Paging-Link klickt, verwenden Sie Ajax, um die Daten zu aktualisieren:

d44d5cbb027ad62f803fefd2a6a7996a

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

16b28748ea4df4d9c2150843fecfba68

fa0d42a2f72d3537a1056757e28847bc

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

< ;/ div>

Im Ordner _controller müssen wir eine Methode actionPage hinzufügen, um Paging-Anfragen in dieser Methode zu verarbeiten:

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 Paging-Daten zwischenspeichern

Paging-Daten zwischenspeichern Das Zwischenspeichern auf einem Cache-Server kann die Paging-Leistung erheblich verbessern. Wenn der Benutzer Paging-Daten anfordert, prüfen Sie zunächst, ob der Cache-Server Daten zwischengespeichert hat, und geben Sie die Daten in diesem Fall direkt zurück. Andernfalls fragen Sie die Datenbank ab, speichern Sie die Daten im Cache-Server und geben Sie die Daten dann zurück.

Wir können den vom Yii-Framework bereitgestellten Caching-Mechanismus verwenden. Verwenden Sie COutputCache in der actionIndex-Methode des Controllers, um Paging-Daten zwischenzuspeichern:

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

}

Wenn der Benutzer Paging-Daten anfordert und im Cache-Server zwischengespeicherte Daten vorhanden sind, werden die zwischengespeicherten Daten direkt zurückgegeben ; Andernfalls wird die Datenbank abgefragt, die Daten im Cache-Server gespeichert und die Daten zurückgegeben.

Zusammenfassend lässt sich sagen, dass die Daten-Paging-Funktion im Yii-Framework einfach zu implementieren ist und eine Vielzahl von Optimierungsmethoden unterstützt, die das Benutzererlebnis von Webanwendungen erheblich verbessern können. Unabhängig davon, ob es sich um eine kleine Datenmenge oder eine große Datenmenge handelt, kann Daten-Paging problemlos implementiert werden.

Das obige ist der detaillierte Inhalt vonDaten-Paging im Yii-Framework: Optimierung der Datenanzeige. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn