簡體   English   中英

如何在Yii中提高CGridView的性能

[英]How to improve CGridView's performance in Yii

我只是對Yii Framework中CGridView的性能感到好奇。 我用Yii構建了一個簡單的應用程序。 在Model的管理頁面上,只需列出所有記錄,分頁(30頁/頁)和自定義排序,到目前為止效果很好。

但我發現渲染CGridView需要4-5秒。 在4-5秒內渲染30個記錄頁面是否正常? 我覺得它很慢! 因為它不是一個復雜的表,只有8列。 生成的SQL查詢運行速度很快(在2-3毫秒內完成),雖然包含一些關系。

我搜索了很多優化,並找到了這份官方文檔: http//www.yiiframework.com/doc/guide/1.1/en/topics.performance

專注於CGridView問題,我嘗試使用緩存,並找到COutputCache這是一個非常好的幫手。

我的做法是在Controller的filter()函數中添加COutputCache:

public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        array(  'COutputCache+admin,_lists',   'duration' => 600,'varyByParam'=>array('sort','page'),     ),
    );
}

您可以添加普通視圖頁面和部分頁面,以秒為單位設置過期時間,並告訴Yii哪個參數可以檢測緩存更改。

當您重新訪問該頁面時,這會有很大幫助,包括排序和分頁。 低頁面渲染時間為40-50毫秒 ,真棒!

但是我沒有找到加速第一次渲染的好方法。 你有什么好的建議嗎?

在我的情況下,性能低的原因是使用數據列的html類型。

首先,在您的網頁上顯示您的日志,看看發生了什么,以便我們提供幫助。

第二,不,這不正常。 ¿你在哪台服務器上? 您使用的是CActiveRecord關系嗎? 多少? 也許答案只是使用CDbCriteria.with來不延遲加載相關的表。

您必須檢查排序,每當排序字段不是索引時,您將從Yii構建的查詢中獲得緩慢的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM