Yii1-防止分页(数据提供程序)计数或缓存它

Yii1-防止分页(数据提供程序)计数或缓存它,yii,yii1.x,Yii,Yii1.x,是否可以防止在数据提供程序中计数,或者至少缓存结果 这是我当前的代码,每次通话都会进行计数: $dataProvider = new CActiveDataProvider(PProjectJob::model()->cache(3600, null, 2), array( 'criteria' => $searchForm->search(), 'pagination' => array(

是否可以防止在数据提供程序中计数,或者至少缓存结果

这是我当前的代码,每次通话都会进行计数:

$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'
值传递到构造函数中,该值在当前代码中作为
null
传递

如果数据提供程序的
'totalItemCount'
null

您可以根据
$searchForm->search()
标准,自己计算或从缓存中提取计数结果,并将其传递给用户


第二个选项是创建您自己的CActiveDataProvider扩展,覆盖
calculateTotalItemCount()
,并为当前运行
count()
查询的计数结果提供缓存选项,您可以将
'totalItemCount'
值传递到构造函数中,您在当前代码中已将其作为
null
传入

如果数据提供程序的
'totalItemCount'
null

您可以根据
$searchForm->search()
标准,自己计算或从缓存中提取计数结果,并将其传递给用户

第二个选项是创建自己的CActiveDataProvider扩展,覆盖
CalculateToTalitItemCount()
,并为当前运行
count()
查询的计数结果提供缓存选项