2013-01-06 2 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 초가 지난 후에 "die"(끝 부분에 문장을 넣으면 내 인덱스 페이지)가 보일 것입니다. 그러나 렌더링 후 또는 넣지 않으면 내 페이지가 올바르게로드되지만 4-5 초 안에로드됩니다.

그래서 렌더링 후에 어떤 일이 발생하는지 잘 이해하지 못했습니다. 내보기 페이지 끝 부분에서 실행을 중지하면 반복됩니다. 속도가 매우 빠릅니다. 그러나 작업이 끝나면 매우 느립니다. 나는 js와 css에 대해 생각했지만, 조사한 후에는 아무 것도 보지 못했고 Firebug는이 파일들이 매우 빨리로드된다는 것을 보여 주었다. 그리고 레이아웃 main.php의 끝에 "die()"문장을 넣으면 매우 빠릅니다.

enter image description here

그래서 나는 그 페이지를 표시하고 레이아웃에 포장됩니다 렌더링 알고 있지만 아마 작업이 매우 느리게 만들 수있는 또 다른 점은 무엇입니까?

아무도 내 문제에 대한 아이디어가 있다면 매우 감사 할 것입니다.

미안하지만 내가 실수하면 영어는 제 모국어가 아닙니다.

는 나를 읽어 주셔서 감사가 느린로드 안 내 이해에서 좋은 일을 :

의 Michaël

+0

http://www.yiiframework.com/wiki/249/understanding-the-view-rendering-flow/를 참조하십시오. 디버거를 사용하여 코드를 단계별로 실행하여 진행 상황을 확인하고 프로파일 러를 사용하여 가장 많은 부분을 차지하는 부분을 확인합니다. – DCoder

+0

질문에 대한 빠른 답변을 원하시면 DCoder의 링크 하단에있는 화살표 다이어그램을보십시오. 본질적으로, 귀하의 콘텐츠는 내부에 내장되어 있습니다 (기본보기 및 렌더링 부분, 레이아웃, CSS/JS – acorncom

답변

0

혼란 스러울 수있는 한 가지 이유는 느린 "렌더링"이 아닐 수도 있다는 것입니다. 로딩 모델과 릴레이션은 느리지 만 기본적으로 게으른로드가 될 수 있습니다. 이는 DB를 쿼리하는 코드가 조회 될 때까지 쿼리되지 않는다는 것을 의미합니다.

이렇게하면 렌더링 속도가 느릴 수 있습니다. 그래서 다른 사람들이 말했듯이, firebug에 대한 페이지 또는 로그에서 로깅을 활성화해야합니다. 그런 다음 느린 쿼리 나 구성 요소가 있는지 확인할 수 있습니다.