브라우저의 주요 구성 요소

  1. 사용자 인터페이스: 주소 표시줄, 뒤로/앞으로 버튼, 북마크 메뉴 등이 포함

    • 요청된 페이지가 표시되는 창을 제외한 브라우저 디스플레이의 모든 부분
  2. 브라우저 엔진: UI와 렌더링 엔진 간의 작업을 marshalling

  3. 렌더링 엔진: 요청된 콘텐츠를 표시하는 역할을 함

    • 요청된 콘텐츠가 HTML인 경우, 렌더링 엔진은 HTML과 CSS를 파싱하고 파싱된 콘텐츠를 화면에 표시
  4. 네트워킹: HTTP 요청과 같은 네트워크 호출의 경우, 플랫폼 독립형 인터페이스 뒤에 있는 여러 플랫폼에 서로 다른 구현을 사용

  5. UI 백엔드: 콤보 상자 및 창과 같은 기본 위젯을 그리기 위해 사용됨

    • 플랫폼에 종속되지 않는 일반 인터페이스를 노출 (아래에는 운영체제 사용자 인터페이스 메서드를 사용)
  6. JavaScript 인터프리터: JavaScript 코드를 파싱하고 실행하는 데 사용됨

  7. 데이터 스토리지: 지속성 레이어. 브라우저는 쿠키와 같은 모든 종류의 데이터를 로컬에 저장할 수 있음

    • 브라우저는 localStorage, IndexedDB, WebSQL, FileSystem과 같은 저장소 메커니즘도 지원

    • chrome과 같은 브라우저는 렌더링 엔진의 인스턴스를 여러개 실행(탭마다 하나씩)

      • 각 탭은 별도의 프로세스에서 실행됨

렌더링 엔진

기본 흐름

11

렌더링 트리 생성 후, 레이아웃 과정을 거침

페인팅

점진적으로 이 과정은 진행됨

기본 흐름 예시


파싱

문법

파서 - 어휘 분석기 조합

파싱 과정은 반복됨

변환

어휘와 구문에 대한 공식적인 정의

참고: https://d2.naver.com/helloworld/59361

https://web.dev/articles/howbrowserswork?hl=ko#formal_definitions_for_vocabulary_and_syntax

개요

  1. 지연시간: 최대한 빠르게 요청하는 것도 포함
  1. 대부분 브라우저는 싱글 쓰레드

1. 탐색

https://developer.mozilla.org/ko/docs/Web/Performance/How_browsers_work#dns_%EC%A1%B0%ED%9A%8Cdns_lookup

참고

https://developer.mozilla.org/ko/docs/Web/Performance/How_browsers_work#%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9interactivity