2013-06-11 162 views
0

你好的開發夥伴們,的Yii - CGridview性能問題

我目前遇到了嚴重的延遲使用AJAX鍵通話(或正常重定向或刷新)更新CGridview的時候,我可以告訴使用Firebug的控制檯,請求本身大約需要399個MS,這並不壞,但是當CGridview更新時,它會下山,我正在談論3941 MS(或4.3秒)來更新視圖,這對我來說非常糟糕!

啓用所有Yii所需的擴展(如Memcache,PDO MySQL和APC)。我也refered使用高速緩存方法加入到解決這個問題:

$dependency = new CDbCacheDependency('SELECT MAX(lu_date) FROM {{issues}}'); 
return new CActiveDataProvider(Issue::model()->cache(3600, $dependency, 4), array(
     'criteria' => $criteria, 
     'pagination' => array('pageSize' => 20, 
     ), 
     'sort' => array('defaultOrder' => 'c_date DESC') 
    )); 

可惜沒有改善發生, 注意我目前擁有超過5間的關係實現並採用延遲加載堪稱CGridview。這可以解決問題嗎? 我目前的服務器是LAMP - 基於Linux的

感謝您在百忙之中閱讀本文時,任何建議或意見極大歡迎:)

回答

0

因爲你有5個關係,你在做1 + 5 * 20 = 101延遲加載查詢。 你應該嘗試預先加載:

Issue::model()->with('relation1', 'relation2', 'deep.relation3') 
+0

問題::模型() - >與( 'relation1', 'relation2', 'relation3', 'relation4', 'relation4') - >緩存(3600,$依賴,5) 這是我所做的,我似乎還沒有注意到一個區別,我必須編輯CGridviw中的東西嗎?關係的方式被稱爲? – KayKay