Skip to Content
Suffering builds character
아카이브5.Browser브라우저 렌더링개요1. 렌더링 개요

1. 렌더링 개요

1. 페이지 렌더링에 필요한 필수 리소스

페이지 렌더링에 필요한 필수 리소스는 무엇일까?

브라우저가 페이지를 렌더링하기 위해서는 HTML 문서와 CSS 그리고 JS와 같은 몇 가지 중요한 리소스들을 필요로 함

이처럼 렌더링에 필수적으로 필요한 중요한 리소스들을 Critical resources라고 함

2. 점진적으로 페이지를 렌더링하기, Progressive rendering

네이티브 애플리케이션과 브라우저의 차이는 무엇일까?

일반적인 네이티브 애플리케이션은 설치 후 단순하게 실행되어 동작하지만,

이와는 다르게 브라우저는 전 세계에 분산된 수많은 각 서버들이 제공하는 리소스들을 다운받아 렌더링 해야하는 역할을 수행한다는 특성을 가지고 있음

문제는 이러한 리소스들은 각 서버마다 다양한 방식으로 작성되어 보관되며, 서로 상이한 포맷들(.png, jpg, otf 등)을 가지고 있기 때문에,

브라우저는 어떠한 페이지를 렌더링하더라도 위와 같은 특성들을 고려하여 안정적이고 점진적으로 화면을 렌더링할 수 있도록 설계되었음

3. 적절한 렌더링 시점 정하기

적절한 렌더링 시점은 언제일까?

브라우저는 페이지를 렌더링할 수 있는 리소스들을 확보하면, 렌더링을 시작하려고 시도함

그렇다면 적절한 렌더링 시점은 언제일까?

A. 최대한 빨리 렌더링하기

첫 번째 전략은 리소스를 확보하는대로 렌더링을 최대한 빨리 시작하는 것으로,

CSS나 JavaScript 없이 HTML파일만 가지고 렌더링을 빠르게 시작하게 되면 HTML 레이아웃 자체는 빠르게 렌더링 될 수 있음

하지만 CSS를 통해 스타일을 적용하거나 JavaScript를 통해 이벤트를 추가하는 작업이 페이지가 렌더링된 이후에 수행되게 되면서,

페이지가 다시 새롭게 렌더링되어야할 필요가 생기게 되고, 그 과정에서 화면이 잠시 뒤틀리거나 깜빡이는 상태로 사용자에게 보여질 수 있음
→ UX 저하, 혼란 야기

따라서 렌더링 속도가 조금은 늦더라도, 렌더링에 필수적으로 필요한 리소스들을 추가 확보한 뒤에 더 나은 렌더링을 제공하는 전략이 더 좋을 수 있음

B. 모든 리소스가 준비된 후 렌더링을 시작하기

두 번째 전략은 모든 리소스가 준비된 후 렌더링을 시작하는 것인데,

이렇게 되면 모든 리소스가 준비될 때까지 브라우저가 렌더링을 하나도 수행하지 않고 기다릴 경우, 사용자는 화면을 보기까지 그만큼 더 오래 기다려야함
→ UX 저하

그러나 페이지의 특성에 따라 더 빠른 시점에도 별다른 문제 없이 서비스를 이용할 수 있는 시점도 존재할 수 있기 때문에
(ex. JS를 통한 동적인 제어가 별로 없는 페이지)

모든 리소스가 준비된 후 렌더링을 시작하는 전략은 다소 비효율적일 수 있음

4. 그래서 적절한 렌더링 시점은?

따라서 앞선 두 전략의 이점들만 고려하여 요약하면,
브라우저는 사용자에게 최대한 빨리 렌더링된 화면을 보여주어야 하면서도, 렌더링 과정에서 틀어지거나 깨진 화면을 보여주지도 않아야 함

그렇게 하기 위해서는 렌더링 작업에 꼭 필요하면서도, 최소한으로 필수적인 리소스들이 무엇인지 알아야 함
→ 렌더링에 필수적인 리소스와 그렇지 않은 리소스를 구분해야 한다는 것으로, 그래야 최대한 빠르고 효율적으로 렌더링을 수행할 수 있기 때문

정리하면 적절한 렌더링 시점은,
사용자에게 혼란을 야기하지 않는 선에서 최대한 빨리 렌더링을 수행할 수 있는 시점
이라고 볼 수 있음

브라우저는 이러한 시점을 기준으로 초기 렌더링을 수행하도록 동작하며,
이러한 렌더링 단계 혹은 과정을 Critical Rendering Path(CRP)라고 함

Note

Critical Rendering Path

Critical - 결정적인, 필수적인 반드시 필요한
Rendering - 렌더링, 브라우저가 웹페이지를 그리는 것
Path - 경로,흐름, 리소스 처리 순서
→ 페이지를 렌더링(Rendering)하기 위해 반드시 필요한(Critical) 리소스들이 처리되는 순서,흐름(Path)

5. 요약

렌더링에 필요한 필수 리소스

HTML, CSS, JS 등 페이지 표시를 위해 꼭 필요한 리소스를 Critical Resources 라고 함

점진적 렌더링 (Progressive Rendering)

브라우저는 리소스를 확보하는 순서대로 점진적으로 렌더링을 시도함

두 가지 렌더링 전략

A. 최대한 빠르게 렌더링
필수 리소스 확보 전에 렌더링하면, 화면이 깜빡이거나 뒤틀릴 수 있어 UX 저하

B. 최대한 느리게 렌더링
모든 리소스를 기다리고 렌더링하면, 초기 화면 표시가 너무 늦어져 UX 저하

적절한 렌더링 시점?

→ 필수 리소스만 확보되면 최대한 빨리 렌더링을 시작하되, 화면이 깨지지 않는 것도 고려해야 함

결론

브라우저는 이러한 균형을 고려해 초기 렌더링(Initial rendering) 순서를 결정하며, 이 과정을 Critical Rendering Path(CRP) 라고 함

Last updated on