首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Yii中提高CGridView的性能

如何在Yii中提高CGridView的性能
EN

Stack Overflow用户
提问于 2012-12-12 09:40:51
回答 3查看 3.3K关注 0票数 3

我只是好奇CGridView在Yii中的性能。我用Yii开发了一个简单的应用程序。在Model的管理页面上,简单地列出所有记录,包括分页(30/页)和自定义排序,到目前为止,这是非常有效的。

但是我发现渲染CGridView需要4到5秒。在4-5秒内渲染30张唱片页正常吗?我觉得有点慢!因为它不是一个复杂的表,只有8列。生成的SQL查询运行得很快(在2-3ms内完成),尽管包含了一些关系。

我在谷歌上搜索了很多关于优化的内容,并找到了以下官方文档:http://www.yiiframework.com/doc/guide/1.1/en/topics.performance

专注于CGridView问题,我尝试使用缓存,并找到COutputCache,这是一个非常好的助手。

我的实践是在Controller的filter()函数中添加COutputCache:

代码语言:javascript
复制
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毫秒,这是令人敬畏的!

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

EN

回答 3

Stack Overflow用户

发布于 2014-10-22 23:59:33

在我的例子中,低性能的原因是对数据列使用html类型。

票数 1
EN

Stack Overflow用户

发布于 2013-01-10 22:20:24

首先,在你的网页上显示你的日志,看看发生了什么事,这样我们就能帮上忙了。

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

票数 0
EN

Stack Overflow用户

发布于 2014-11-11 17:38:37

您必须检查排序,每当排序字段不是索引时,就会从Yii构建的查询中得到缓慢的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13836850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档