[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의 세부적인 동작 흐름이다.
댓글남기기