【问题标题】:Yii - CGridview performance issueYii - CGridview 性能问题
【发布时间】:2013-06-11 15:50:51
【问题描述】:

各位开发者您好,

我目前在使用 ajax 按钮调用(或正常重定向或刷新)更新 CGridview 时遇到严重延迟,我可以使用 firebug 的控制台判断请求本身需要大约 399 毫秒,这还不错,但它会下降当 CGridview 更新时,我说的是 3941 MS(或 4.3 秒)只是为了更新视图,这对我来说非常糟糕!

所有 Yii 所需的扩展(例如 Memcache、PDO MySQL 和 APC)都已启用。我还提到了使用缓存方法通过添加来解决这个问题:

 $dependency = new CDbCacheDependency('SELECT MAX(lu_date) FROM {{issues}}');
 return new CActiveDataProvider(Issue::model()->cache(3600, $dependency, 4), array(
        'criteria' => $criteria,
        'pagination' => array('pageSize' => 20,
        ),
        'sort' => array('defaultOrder' => 'c_date DESC')
    ));

很遗憾,没有改进, 请注意,我目前使用延迟加载在 CGridview 中实现和调用了超过 5 个关系。这可能是问题所在吗? 我当前的服务器是 LAMP - 基于 Linux 的

感谢您花时间阅读本文,非常欢迎任何建议或意见:)

【问题讨论】:

    标签: memcached apc yii


    【解决方案1】:

    因为您有 5 个关系,所以您正在使用延迟加载进行 1+5*20 = 101 个查询。 您应该尝试预先加载:

    Issue::model()->with('relation1', 'relation2', 'deep.relation3')
    

    【讨论】:

    • Issue::model()->with('relation1', 'relation2', 'relation3','relation4','relation4')->cache(3600, $dependency, 5) 这个我做了什么,我似乎仍然没有注意到有什么不同,我是否也必须在 CGridviw 中编辑一些东西?关系的调用方式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多