웹 페이지의 3개 구성 요소 (HTML, CSS, JS) 모두 실행 및 렌더하여, 유저에게 결과 웹 페이지 노출
HTML ~= DOM : HTML 는 단지 텍스트, DOM 은 HTML 조작을 위해 제공되는 API (객체)
CSS ~= CSSOM : CSS 는 단지 텍스트, CSSOM 은 CSS 조작을 위해 제공되는 API (객체)
DOM Tree + CSSOM Tree → Render Tree
Render Tree → Layout (Reflow:뷰포트의 사이즈를 재 결정) → Paint (Repaint:뷰포트의 사이즈가 변경되면 다시 그림)
HTML + CSS 가 웹 브라우저에서 유저에게 표기가 완료되면, 이제 JS 를 통해 인터렉션 이벤트 등 적용
- Time to interactive (TTI) : HTML + CSS 로드 뒤 JS 를 통해 마우스 이벤트 등 비로소 적용됐을때 → 한마디로 사용자가 실제로 상호작용 할수있는 상태에 도달하는데 걸리는 시간
정리: 웹 브라우저는 웹페이지의 구성요소(HTML, CSS, JS)를 받고 Rendering 하게된다.
HTML에는 DOM이라는 API객체, CSS에는 CSSOM이라는 API객체 이 두 Tree가 합쳐져 Render Tree가 되며,
Render Tree는 Layout과정을 거쳐 Paint과정으로 결과가 나와 우리눈에 보여지는 웹페이지가 됨.
이떄 Layout은 우리가 보는 화면의 크기인 Viewport의 계산을 의미하며, Viewport의 계산이 끝나면 화면을 그리는 과정이 Paint이다.
추가 참고
TTI는 웹 성능 최적화의 중요한 지표로, 초기 로딩 시간을 단축하고 사용자 경험을 개선하는 데 사용됩니다.Reflow는 성능에 큰 영향을 미칠 수 있기 때문에, 이를 최소화하는 것이 중요합니다. 예를 들어, DOM을 자주 조작하거나 스타일을 변경할 때 발생할 수 있습니다.
해결 방법으로는 DocumentFragment를 사용하거나, CSS 클래스 토글로 스타일 변경을 한 번에 적용하는 것이 효과적입니다.