【问题标题】:Yii: render processYii:渲染过程
【发布时间】:2012-12-20 10:42:26
【问题描述】:

我想知道是否有人可以向我解释当我们调用“渲染”时会发生什么。

让我介绍一下我的问题:

这是我的行动:

public function actionIndex()
{
    $new_user = new CustomUser;
    $new_person = new CustomPerson;

    $tab_person = $this->getListPerson();
    $this->render('index',array('tab'=>$tab_person,
                                'user'=>$new_user,
                                'person'=>$new_person));
}

这是我的索引视图:

.
. 
.
</p> <br/>   
<?php $this->renderPartial('person-form', array('person'=>$person,
                                                'user' =>$user ));
?>

所以我的问题是加载页面时间很长。 如果我放一个

死(“死”);

在我的 actionIndex 中渲染之前或在我的视图结束时(在 renderPartial 之后),执行速度非常快。我会在 0.3 秒后看到“死”(如果我把声明放在它的末尾,我会看到我的索引页)。但是,如果我在渲染之后放置它或者我不放置它,那么我的页面将会在 4-5 秒内正确加载。

所以我想我不太了解渲染后会发生什么。如果我在查看页面结束时停止执行,我重复一遍,它非常快,但在我的操作结束时它非常慢。我考虑过 js 和 css,但在查看后我什么也没看到,Firebug 告诉我这些文件加载​​得非常快。 如果我将“die()”语句放在布局 main.php 的末尾,它也非常快。

所以我知道渲染会显示页面并将其包装在布局中,但是还有其他可能会使操作变得非常缓慢的事情吗?

如果有人对我的问题有任何想法,我将不胜感激。

对不起,如果我做错了,英语不是我的母语。

感谢您阅读我,祝您有美好的一天:)

迈克尔

【问题讨论】:

  • yiiframework.com/wiki/249/understanding-the-view-rendering-flow。使用调试器单步执行代码以查看发生了什么,使用分析器查看哪些部分花费的时间最多。
  • 要快速回答您的问题,请查看 DCoder 链接底部的箭头图。本质上,您的内容是由内而外构建的(基本视图和 renderPartials,然后是布局,然后是 CSS/JS

标签: performance yii render


【解决方案1】:

据我了解,它不应加载较慢。也许您在页面上加载了其他内容。 尝试启用屏幕上的日志:http://www.yiiframework.com/wiki/58/sql-logging-and-profiling-in-firebug-yii-1-1/。查看视图渲染后是否执行了任何操作。

【讨论】:

    【解决方案2】:

    这可能看起来令人困惑的一个原因是它可能不是缓慢的“渲染”。可能是加载模型和关系很慢,但默认情况下它们是延迟加载的。这意味着在请求它们的代码被命中之前不会查询数据库,这通常在视图中。

    这也许可以解释为什么渲染很慢。所以就像其他人说的那样,您需要在页面或日志中启用日志记录到萤火虫。然后,您可以检查任何慢查询或组件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2013-08-08
      • 1970-01-01
      • 2012-05-09
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多