3

我只是好奇 CGridView 在 Yii Framework 中的表现。我用 Yii 构建了一个简单的应用程序。在模型的管理页面上,简单地列出所有记录,分页 (30/page) 和自定义排序,到目前为止效果很好。

但我发现渲染 CGridView 需要 4-5 秒。在 4-5 秒内呈现 30 条记录页面是否正常?感觉有点慢啊!因为它不是一个复杂的表,只有 8 列。生成的 SQL 查询运行速度很快(在 2-3 毫秒内完成),尽管包括一些关系。

我google了很多优化,找到了这个官方文档: 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 毫秒,这太棒了!

但是我还没有找到加速第一次渲染的好方法。你有什么好的建议吗?

4

3 回答 3

1

在我的情况下,性能低下的原因是数据列使用 html 类型。

于 2014-10-22T23:59:33.153 回答
0

You´ve got to check the sorting, whenever the sorting field is not an index you will get slow results from the query built by Yii

于 2014-11-11T17:38:37.537 回答
0

首先,在您的网页中显示您的日志以查看发生了什么,以便我们提供帮助。

第二,不,这不正常。¿ 你在哪个服务器上?你在使用 CActiveRecord 关系吗?多少?也许答案只是使用 CDbCriteria.with 来不延迟加载相关表。

于 2013-01-10T22:20:24.203 回答