我只是好奇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:
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毫秒,这是令人敬畏的!
但是我还没有找到一个好的方法来加速第一次渲染。你有什么好建议吗?
发布于 2014-10-22 23:59:33
在我的例子中,低性能的原因是对数据列使用html类型。
发布于 2013-01-10 22:20:24
首先,在你的网页上显示你的日志,看看发生了什么事,这样我们就能帮上忙了。
第二,不,这不正常。你在哪台服务器上?你在使用CActiveRecord关系吗?多少?也许,答案只是使用CDbCriteria.with来不延迟加载相关表。
发布于 2014-11-11 17:38:37
您必须检查排序,每当排序字段不是索引时,就会从Yii构建的查询中得到缓慢的结果。
https://stackoverflow.com/questions/13836850
复制相似问题