웹페이지 렌더링 과정을 알아보장

IntHyun·2022년 9월 19일
1

웹페이지 렌더링

브라우저가 html 파일을 화면에 그려내는 과정

1. 웹페이지 렌더링의 과정

1. 파싱

브라우저는 우선 html 파일을 DOM 으로 변환(파싱) 함.
참고 ) html의 개행은 text로 표시 예를들어 body 태그 안에 div 태그가 들어있다면 body,text,div 와 같이 콘솔창에 출력됨

2. 스타일 계산

CSS 역시 파싱하여 CSSOM으로 변환함.

3. 레이아웃

CSSOM 정보를 토대로 레이아웃 트리(렌더 트리)를 생성함

4. 페인트

레이아웃 트리(렌더 트리) 가 생성되면 이 트리를 따라 페인트 기록이 생성 됨.

5. 컴포지팅

각각의 레이어를 스크린에 픽셀로 표현하고 나누었던 레이어들을 합성해 페이지를 그림

2. page reflow & repaint

브라우저는 html 구조상의 변화 혹은 스타일의 변화가 왔을 때 reflow,repaint 라는 과정을 거침.

- reflow : 레이아웃 (너비,높이 등) 변경 시 영향 받는 모든 노드 (자식, 부모)의 수치를 다시 계산하여 렌터 드리를 재생성하는 작업 즉, 앞서 말한 3번의 과정부터 다시 수행

- repaint : reflow 과정이 끝난 후 재생성된 렌더 트리를 다시 그리는 작업으로 수치와 상관없는 스타일 변경시에는 reflow 과정을 생략한 repaint 작업만 수행함 즉, 앞서 말한 4번의 과정부터 수행

정리 : html을 변경시 3번부터 진행 단, 스타일만 변경시에는 reflow 과정을 생략하고 repaint작업만 수행함.

3. 레이아웃이 바뀌는 애니메이션

레이아웃이 바뀌는 애니메이션을 구현하면 브라우저는 매 프레임마다 reflow, repaint 과정을 수행하는데 이 과정은 브라우저에 상당한 부담이 됨.

이때 브라우저의 부담을 덜기 위해서 GPU(graphic processing unit)를 이용한 그래픽 가속능력을 사용할 수 있는데 이러한 능력을 지원하는 css 속성이 transform이다.

결론 : 정적인 사이트에서 요소의 위치를 단순 배치하는 것은 position을 사용해도 괜찮지만 애니메이션이나 혹은 동적으로 요소의 위치를 이동해야 하는 경우 transform의 속성을 사용하는 것이 성능(GPU를 이용하기 때문)에 좋음.
profile
기록용으로 벨로그를 작성합니다.

0개의 댓글