Yii1 - 防止分页(dataProvider)计数,或缓存它
Yii1 - prevent pagination (dataProvider) from counting, or cache it
是否可以防止在数据提供程序中进行计数,或者至少缓存结果?
这是我当前的代码,每次调用都会进行计数:
$dataProvider = new CActiveDataProvider(PProjectJob::model()->cache(3600, null, 2), array(
'criteria' => $searchForm->search(),
'pagination' => array(
'pageSize' => Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']),
),
'sort' => RedeliverySearchForm::getSort(),
'totalItemCount' => null
));
初始查询总是一样的,缓存一个计数结果24小时对性能影响很大。
您可以将 'totalItemCount'
值传递给 CActiveDataProvider 构造函数,您在当前代码中将其作为 null
传入
如果 'totalItemCount'
是 null
,数据提供者只会 运行 计数查询
您可以愉快地根据 $searchForm->search()
条件自行计算或从缓存中获取计数结果,并将其传递给
第二个选项是创建您自己的 CActiveDataProvider 扩展,覆盖 calculateTotalItemCount()
,并为当前 运行 查询 count()
的计数结果提供缓存选项
是否可以防止在数据提供程序中进行计数,或者至少缓存结果?
这是我当前的代码,每次调用都会进行计数:
$dataProvider = new CActiveDataProvider(PProjectJob::model()->cache(3600, null, 2), array(
'criteria' => $searchForm->search(),
'pagination' => array(
'pageSize' => Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']),
),
'sort' => RedeliverySearchForm::getSort(),
'totalItemCount' => null
));
初始查询总是一样的,缓存一个计数结果24小时对性能影响很大。
您可以将 'totalItemCount'
值传递给 CActiveDataProvider 构造函数,您在当前代码中将其作为 null
传入
如果 'totalItemCount'
是 null
您可以愉快地根据 $searchForm->search()
条件自行计算或从缓存中获取计数结果,并将其传递给
第二个选项是创建您自己的 CActiveDataProvider 扩展,覆盖 calculateTotalItemCount()
,并为当前 运行 查询 count()
的计数结果提供缓存选项