웹 애플리케이션 성능 최적화 — 1

Argon
aaant
Published in
4 min readSep 23, 2021

최근 웹 애플리케이션은 다양하고 복잡한 기능을 구현 하면서 크고 무거워지고 있다. 사용자 요구에 맞춰 정확한 기능을 수행하는 것도 중요하지만 신속한 반응 또한 사용자 경험에 큰 영향을 끼치는 요소이다. 따라서 성능 최적화에 필요한 사전 지식을 설명하고 웹 애플리케이션의 성능을 최적화 할 수 있는 방법에 대해서 정리해보려고 한다.

웹브라우저의 동작과정

성능 최적화에 앞서 웹 브라우저의 동작과정을 이해할 필요가 있다. 브라우저는 웹 페이지에 필요한 리소스를 내려받고 해석한 다음 여러 계산 과정을 거쳐 콘텐츠를 화면에 보여 준다. 이를 브라우저의 로딩 과정이라고 하며 다운로드, 파싱, 스타일, 레이아웃, 페인트, 합성 단계로 나뉜다.

  1. 파싱

우리가 웹 페이지에 접속하게 되면, 네트워크를 통해 해당 웹 페이지의 HTML 문서를 다운로드 한다. 이 때 다운로드한 HTML문서를 해석하여 DOM트리를 구성하는 단계를 파싱이라고 한다. 파싱 중 <script /> , <link /> , <img /> 를 발견하면 각 리소스를 요청하고 다운로드 한다. HTML 또는 리소스에 CSS가 포함된 경우 CSSOM 트리 구성 작업도 함께 진행한다.

2. 스타일

파싱 과정을 거쳐 만들어진 DOM트리와 CSSOM트리를 조합하여 브라우저는 렌더 트리를 구성한다. 이 과정을 스타일이라고 하며 만들어진 렌더 트리는 화면에 나타나는 요소, 스타일, 순서를 명세하는 트리이다.

3. 레이아웃

레이아웃 단계에서는 노드의 정확한 위치와 크기를 계산한다. 노드의 정확한 크기와 위치를 파악하기 위해 루트 부터 노드를 재귀적으로 순회하면서 계산하고 결과를 렌더 트리에 반영한다. 만약 CSS에서 크기 값을 %로 지정하였다면, 레이아웃 단계를 거친 후 % 값은 계산되고 측정 가능한 픽셀 단위로 변환된다.

4. 페인트

레이아웃 단계를 통해 화면에 배치된 엘리먼트들에게 색을 입히고 레이어의 위치를 결정하는 단계이다. 이 단계 역시 루트 부터 재귀적으로 실행이 됩니다.

5. 합성

페인트 단계에서 생성된 레이어를 합성하여 화면에 업데이트한다. 이 후 렌더 단계가 끝나면 화면에서 웹페이지를 볼 수 있다.

브라우저 로딩 과정 요약

다음 포스트에서는 로딩 과정에서 성능에 영향을 줄 수 있는 요소를 알아보고 로딩 과정에서 성능 최적화를 할 수 있는 방법에 대해 정리 해보려고한다.

--

--