인터넷의 급속한 발전으로 인해 데이터는 점점 더 빠르게 증가하고 있습니다. 웹 애플리케이션에서 데이터 페이징은 사용자 경험을 향상시키는 데 필요한 도구 중 하나입니다. Yii 프레임워크에서는 데이터 페이징을 쉽게 구현할 수 있습니다. 이 글에서는 Yii 프레임워크의 데이터 페이징과 데이터 양이 많을 때 데이터 표시를 최적화하는 방법을 소개합니다.
1. Yii 프레임워크의 데이터 페이징
1.1 페이징 클래스
Yii 프레임워크에서 페이징 기능은 CPagination 클래스에 캡슐화되어 있습니다. CPagination 클래스는 다음과 같은 일반적인 메소드를 제공합니다.
페이지에 표시해야 하는 10,000개의 데이터가 있는 사용자 모델 User가 있다고 가정합니다. 먼저 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(),
));
마지막으로 페이징 HTML 코드를 얻으려면 뷰 파일에서 getPages 메서드도 사용해야 합니다.
dc6dce4a544fdca2df29d5ac0ea9906b
<?php $this->widget('CLinkPager', array( 'pages' => $pagination, )); ?>
16b28748ea4df4d9c2150843fecfba68
2. 데이터 표시 최적화
데이터 양이 많은 경우 기존 페이징 방식을 사용하면 페이지 로딩 속도가 느려지고 사용자 경험이 저하될 수 있습니다. 데이터 표시를 최적화하는 두 가지 방법은 다음과 같습니다.
2.1 Ajax 페이징
Ajax 페이징을 사용하면 페이지를 전환할 때마다 전체 페이지를 새로 고치는 문제를 피할 수 있습니다. 사용자가 페이징 링크를 클릭하면 업데이트가 필요한 부분만 업데이트하라는 Ajax 요청이 전송되어 페이지 새로고침 속도가 크게 향상됩니다.
$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를 사용하여 데이터를 업데이트합니다.
d44d5cbb027ad62f803fefd2a6a7996a
<?php $this->renderPartial('_userlist', array('users' => $users)); ?>
16b28748ea4df4d9c2150843fecfba68
fa0d42a2f72d3537a1056757e28847bc<?php $this->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 함수 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 프레임워크의 데이터 페이징 기능은 구현하기 쉽고 다양한 최적화 방법을 지원하므로 웹 애플리케이션의 사용자 경험을 크게 향상시킬 수 있습니다. 데이터의 양이 적든 많든 상관없이 데이터 페이징을 쉽게 구현할 수 있습니다.
위 내용은 Yii 프레임워크의 데이터 페이징: 데이터 표시 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!