繁体   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