HTML Critical Rendering Path

이조은·2020년 12월 15일
0

Critical Rendering Path

브라우저가 서버에서 페이지에 대한 HTML 응답을 받으면 화면에 표시되기 전에 많은 단계를 거쳐야 한다. 브라우저가 페이지의 초기 출력을 위해 실행해야하는 이 순서를 Critical Renderting Path라고 한다.

CRP의 단계

  1. DOM 트리 구축 (Constructing the DOM Tree)
  2. CSSOM 트리 구축 (Constructing the CSSOM Tree)
  3. JavaScript 실행 (Running JavaScript)
  4. Render Tree 생성 (Creating the Render Tree)
  5. 레이아웃 생성 (Generating the Layout)
  6. 페인팅 (Painting)

DOM 트리 구축


DOM(Document Object Model) 트리는 완전히 구문 분석된 HTML 페이지의 Object 표현이다.

루트 요소 html로 시작하여 페이지의 각 element/text에 대한 노드가 만들어진다. 각 노드에는 해당 요소의 전체 특성이 포함된다.

CSSOM 트리 구축


CSSOM(CSS Object Model)은 DOM과 연관된 스타일의 Object 표현이다. 이것은 DOM과 비슷한 방식으로 표현되지만 명시적 또는 암시적 선언과 상속 여부에 관계없이 각 노드의 관련 스타일로 표시된다.

JavaScript 실행

JavaScript는 "파서 차단 리소스(parser blocking resource)"로 간주된다. 즉, HTML 문서 자체의 구문 분석은 JavaScript에 의해 차단된다.

파서가 내부 태그이든 외부 태그이든 <script> 태그에 도달하면 (외부 태그 인 경우) fetch를 중단하고 실행한다. 따라서 문서 내의 요소를 참조하는 JavaScript 파일이 있는 경우 해당 문서가 표시된 후에 배치 해야 한다.

Render Tree 생성


렌더링 트리는 DOM과 CSSOM의 조합이다. 페이지에서 최종적으로 렌더링 될 내용을 나타내는 트리다. 즉, 표시되는 내용만 캡쳐하가 때문에 display:none을 사용하여 CSS로 숨겨진 요소는 포함하지 않는다.

레이아웃 생성

레이아웃은 뷰포트의 크기에 관련된 CSS 스타일에 대한 컨텍스트에 의해 뷰포트의 크기를 결정한다. 비율 또는 뷰포트 단위. 뷰포트 크기는 문서 헤드에 제공된 메타 뷰포트 태그에 의해 결정되거나, 태그가 제공되지 않으면 기본 뷰포트 너비 인 980px가 사용된다.

페인팅

마지막으로 Painting 단계에서 페이지의 가시적인 내용을 픽셀로 변환하여 화면에 표시 할 수 있다.

페인트 단계에서 처리에 걸리는 시간은 DOM의 크기와 적용되는 스타일에 따라 다르다. 어떤 스타일은 다른 스타일보다 더 많은 작업을 필요로 한다. 예를 들어, 복잡한 그래디언트 배경 이미지는 단순한 단색 배경색보다 더 많은 시간을 필요로 한다.

출처로 이동하기

profile
싱글벙글

0개의 댓글