[Web] 브라우저 렌더링 (1) - 브라우저 구성 요소
📘 브라우저의 기본 기능
- 브라우저의 역할: 리소스를 서버에 요청하고, 응답받은 리소스를 화면에 출력
- 리소스의 종류는 HTML, PDF, 이미지 등이 있으며, 리소스 위치는
URI
를 통해 지정 - 브라우저가 HTML 파일을 해석하고 표시하는 방식은 HTML 및 CSS 사양에 지정되어 있으며, 이는 W3C에서 관리
- 일반적인 브라우저 UI: 주소 표시줄, 뒤로가기/앞으로가기 버튼, 북마크, 새로고침 버튼, 중지 버튼, 홈 버튼
✅ Chrome 브라우저 특징
- 브라우저 메인 프로세스가 여러 탭을 관리한다.
- 각 탭은 별도의 프로세스에서 실행되며, 렌더링 엔진의 인스턴스를 탭마다 하나씩 실행한다.
- 멀티 프로세싱 이유: 탭 1개가 무응답 상태가 되더라도 다른 탭에 영향을 주지 않는다.
📘 브라우저 구성 요소
- 사용자 인터페이스: 요청된 페이지가 표시되는 창을 제외한 브라우저 디스플레이의 모든 부분
- 브라우저 엔진: UI와 렌더링 엔진 간의 작업 마샬링(데이터 가공)
- 렌더링 엔진: 요청된 콘텐츠를 화면에 출력하는 역할
- ex) 요청된 콘텐츠가 HTML인 경우, 렌더링 엔진은 HTML과 CSS를 파싱하고 파싱된 콘텐츠를 화면에 표시
- 네트워킹: HTTP/HTTPS 요청 같은 네트워크 작업 처리 (플랫폼 독립적)
- UI 백엔드: 플랫폼과 독립적인 공통 인터페이스를 제공하여 UI 요소를 그림. 그래픽 라이브러리 내장.
- JavaScript 인터프리터:: 자바스크립트 코드를 파싱하고 실행
- 데이터 스토리지: 쿠키와 같은 모든 종류의 데이터를 로컬에 저장 가능
- ex) localStorage, IndexedDB 등 저장소 메커니즘 지원
📘 렌더링 엔진
브라우저의 렌더링 엔진은 요청된 콘텐츠를 화면에 출력하는 역할
을 한다.
요청된 콘텐츠가 HTML인 경우 렌더링 엔진은 HTML과 CSS를 파싱하고 파싱된 콘텐츠를 화면에 표시한다.
Safari는 WebKit
, Chrome은 Blink
사용 (WebKit 기반)
네트워킹 레이어에서 요청된 문서의 콘텐츠를 가져오기 시작하며, 일반적으로 8KB 청크 단위로 이루어진다.
이 과정은 점진적으로 진행
되며, 렌더링 엔진은 최대한 빨리 콘텐츠를 화면에 표시하려고 시도한다.
렌더링 트리의 빌드 및 레이아웃을 시작하기 전에 모든 HTML이 파싱될 때까지 기다리지 않는다.
콘텐츠의 일부가 파싱되고 표시되는 동안 프로세스는 네트워크에서 계속 수신되는 나머지 콘텐츠로 계속 진행된다.
아래는 WebKit의 세부적인 동작 흐름이다.
댓글남기기