2013-01-06 66 views
0

我想知道是否有人能够向我解释当我们称之为“渲染”时会发生什么。Yii:渲染过程

让我给你介绍我的问题:

这是我的行动:

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)); 
} 

这是我的索引视图:

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

死(“死”);

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

所以我觉得我不太了解渲染后会发生什么。我再说一遍,如果我在查看页面结束时停止执行,速度非常快,但在我的行动结束时,它非常缓慢。我想过js和css,但是在看了看之后,我没有看到任何东西,Firebug向我显示这些文件加载​​非常快。 如果我把“die()”语句放在布局main.php的末尾,它的速度也非常快。

enter image description here

所以我知道渲染会显示该页面,并在布局包裹,但有另一种东西,也许这可以使动作很慢?

如果有人对我的问题有一个想法,我将非常感激。

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

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

迈克尔

+0

请参阅http://www.yiiframework.com/wiki/249/understanding-the-view-rendering-flow/。使用调试器浏览代码,看看发生了什么,使用分析器查看哪些部分花费最多时间。 – DCoder

+0

要快速回答您的问题,请查看DCoder链接底部的箭头图。实质上,你的内容是内置的(基本视图和renderPartials,然后布局,然后是CSS/JS) – acorncom

回答

0

这可能看起来令人困惑的一个原因是,它可能不是“渲染”速​​度慢。这可能是加载模型和关系缓慢,但默认情况下他们是懒加载。这意味着在询问数据库的代码被击中之前,数据库不会被查询,这通常是可见的。

这可以解释为什么渲染速度慢。所以像其他人说的那样,您需要启用日志记录,无论是在页面还是登录到萤火虫。然后您可以检查任何缓慢的查询或组件。