본문으로 바로가기

 
 
브라우저 렌더링 과정은 웹 페이지를 브라우저에 표시하기 위한 단계적인 프로세스를 나타냅니다. 이러한 프로세스를 이해하면 웹 페이지를 최적화하고 성능을 향상시킬 수 있습니다. 
 
 

[HTML 파일]

<!DOCTYPE html>
<html>
  <head>
    <title>렌더링 예제</title>
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
    <h1>Hello, World!</h1>
    <p>This is a sample paragraph.</p>
    <script src="script.js"></script>
  </body>
</html>

[CSS 파일]

h1 {
  color: blue;
}

[JS 파일]

document.querySelector('p').style.color = 'red';

 
브라우저 렌더링 과정을 아주 간단한 예제와 함께 살펴보겠습니다.
렌더링 과정은 HTML, CSS, Javasciript의 상호작용으로 구성됩니다. 
 

1. 문서 파싱(Document Parsing)

  • 브라우저는 HTML 문서를 가져오고, 문서의 각 요소(태그)를 파싱하여 DOM(Document Object Model)을 생성합니다.
    • DOM은 웹 페이지의 구조를 표현하며, HTML 요소와 요소의 관계를 포함시킵니다.
  • HTML 문서를 파싱하면서 <script> 태그를 만나면, 해당 스크립트를 실행하기 위해 파싱을 일시 중지합니다. (블로킹)
  • CSS 파일과 외부 리소스를 가져오기 위한 네트워크 요청도 시작됩니다.

2. CSS 파싱 및 스타일 계산 (CSS Parsing and Style Calculation)

  • CSS 파일 및 <style> 태그에서 스타일 정보를 파싱하고, 각 요소에 적용할 스타일을 계산합니다.
  • <h1> 요소에 대한 스타일은 'color: blue;'로 계산됩니다.

3. 레이아웃 (Layout)

  • 브라우저는 요소의 크기와 위치를 계산하여 화면에 배치합니다. 이 과정에서 <h1> 요소의 크기와 위치가 결정됩니다.

4. 페인팅 (Paint)

  • 레이아웃 단계에서 생성된 레이아웃 정보를 기반으로 화면에 픽셀을 그리는 페인팅 과정이 진행됩니다.
  • 브라우저는 레이아웃 정보에 따라 픽셀을 그리고 각 요소를 화면에 표시합니다.
  • <h1>, <p> 요소가 화면에 표시됩니다.

5. 자바스크립트 실행

  • HTML 파싱 중, <script> 태그를 만나면 브라우저는 Javascript 파일을 실행합니다.
  • Javascript 코드는 <p> 요소의 텍스트 색상을 변경하도록 요청합니다.

5. 리플로우(Reflow)

  • 웹 브라우저에서 문서의 레이아웃을 다시 계산하고 재그리는 과정을 말합니다. 레이아웃을 재조정해야 할 때 브라우저는 해당 페이지의 모든 요소의 크기와 위치를 다시 계산하고, 이러한 계산 결과에 따라 페이지를 다시 그립니다.
  • 웹 페이지의 요소가 동적으로 변경되거나 스타일이 변경될 때 발생합니다. (예: 요소의 크기, 위치, 폰트 크기 변경)
  • 리플로우는 비용이 많이 드는 연산이므로 최소화 해야 합니다.
  • <p> 요소의 스타일이 변경되면 리플로우가 발생합니다.

6. 리페인트 (Repaint)

  • 레이아웃의 변경 없이 요소의 스타일 속성(색상, 배경, 텍스트 등)이 변경될 때 발생합니다. 리페인트는 리플로우보다는 비용이 낮습니다.
  • <p> 요소의 새로운 레이아웃을 계산하고, 변경된 내용을 화면에 다시 그려 빨간색으로 표시합니다.

7. 최적화 및 렌더링

  • 브라우저는 최적화 기법을 사용하여 성능을 향상시키며, 최종 렌더링을 수행하여 사용자에게 웹 페이지를 표시합니다.