您加載和計算每個選項卡的項目的方式可能會影響MySQL負載和頁面速度。 CActiveRecord::count()和CActiveRecord::findAll()之間的簡單的基準可以在這裏看到:
$modelCount = Model::model()->count();
$modelCount = count(Model::model()->findAll());
// DB profile log:
// system.db.CDbCommand.query(SELECT COUNT(*) FROM `throw` `t`) 1 0.00029s
// system.db.CDbCommand.query(SELECT * FROM `throw` `t`) 1 0.00283s
的的CActiveRecord ::計數()是快十倍,你計數的FindAll()與PHP計數()甚至前。當然,對於您實際使用的選項卡,您可以使用相同的findAll()查詢來計算選項卡編號,並填充該頁面上的項目列表。
要爲自己和實驗SQL查詢速度測試,添加查詢分析以下內容添加到您的config.php文件:
'db'=>array(
// ... existing db config etc
'enableProfiling' => true,
'enableParamLogging' => true,
),
並在日誌配置...
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class' => 'CProfileLogRoute',
'levels' => 'profile',
'enabled' => true,
),
優化你的計數查詢可能足以提高你的頁面速度和MySQL負載,以滿足你或你的用戶的需求。
或者你可以保持標籤計數會話陣列:
Yii::app()->session['tabCounts'] = array(
'tab1' => 44,
'tab2' => 456,
'tab3' => 9345,
);
然後在任何控制器的行動,將導致改變項目的數量,增加一個鉤來改變數量。當然,你仍然需要在首次加載時使初始MySQL查詢填充數組。