개발일지

5월 취업대비 - 웹 페이지가 브라우저에 렌더링되는 과정 본문

frontEnd/기술면접

5월 취업대비 - 웹 페이지가 브라우저에 렌더링되는 과정

푸린푸린김푸린 2023. 5. 8. 13:01

웹 페이지가 브라우저에 렌더링되는 과정

 

브라우저란 ?

웹 브라우저는 동기적으로 HTML+CSS, Javascript 언어를 해석하여 내용을 화면에 보여주는 응용 소프트웨어입니다.

 

 

브라우저의 주요 기능은 사용자( 클라이언트 ) 가 선택한 자원을 서버에 요청( Request )하고 서버의 응답( Response )을 받아 브라우저에 표시하는 것입니다.

브라우저는 HTML과 CSS 명세에 따라 THML파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구인 W3C(World Wide Web Consortium)에서 정합니다. 과거에는 브라우저들이 일부만 이 명세에 따라 구현하고 독자적인 방법으로 확장함으로써 웹 제작자가 심각한 호환성 문제를 겪었지만 최근에는 대부분의 브라우저가 표준 명세를 따르니다.

 

브라우저의 주요 구성 요소

  1. 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분
  2. 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어
  3. 렌더링 엔진 - 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시
  4. 통신 - HTTP 요청과 같은 네트워크 호출에 사용됨. 이것은 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행 
  5. UI 백엔드 - 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용
  6. 자바스크립트 해석기 - 자바스크립트 코드를 해석하고 실행
  7. 자료 저장소 - 자료를 저장하는 계층으로, 쿠키를 저장하는 것과 같이 모든 종류의 자원을 하드 디스크에 저장할 필요가 있으HTML5 명세에는 브라우저가 지원하는 '웹 데이터 베이스'가 정의되어 있음

 

브라우저의 주요 구성 요소

 

여기서 렌더링 엔진이 요청 받은 내용을 브라우저에 표시해주는 일을 하는데 기본적인 동작 과정은 아래와 같습니다.

 

 

 

렌더링 엔진의 동작 과정

 

렌더링 엔진은 HTML 문서를 파싱하고 태그를 DOM 트리를 구축니다. 그 다음 외부 CSS 파일과 함께 포함된 스타일 요소도 파싱합니다.

스타일 정보( CSSOM : Css Object Model ) 와 DOM 트리로  "렌더 트리"라고 부르는 또 다른 트리를 생성합니다.

렌더 트리 생성이 끝나면 화면 상에 배치가 시작됩니다. 

렌더 트리가 만들어지고 레이아웃이 구성되었으면 ( 배치가 완료되었으면 ) UI 백엔드가 동작하여 렌더 트리 각 개체를 화면의 픽셀(px)값으로 나타냅니다.

렌더링 엔진은 좀 더 나은 사용자 경험을 위해 가능하면 빠르게 내용을 표시하는데 모든 HTML을 파싱할 때까지 기다리지 않고 배치와 그리기 과정을 시작합니다.  네트워크로부터 나머지 내용이 전송되기를 기다리는 동시에 받은 내용의 일부를 먼저 화면에 표시하는 것입니다.

 

 

여기까지 렌더링 엔진이 처리하는 과정이고, 자바스크립트는 자바스크립트 엔진이 처리하게 됩니다.

HTML 파서는 <script> 태그를 만나면 Javascript 코드를 실행하기 위해 DOM 생성 프로세스를 중지하고 자바스크립트 엔진으로 권한을 넘깁니다. 제어 권한을 넘겨받은 자바스크립트 엔진은 <script> 태그 내의 Javascript 코드 또는 src 속성에 정의된 Javascript 파일을 로드하고 파싱 하여 실행합니다. Javascript의 실행이 완료되면 다시 HTML 파서로 제어 권한을 넘겨서 중지했던 시점으로 돌아가 DOM 생성을 재개합니다. 

 

※ DOM 이 완성되기 전에 자바스크립트 엔진이 DOM 을 조작하게 되면 에러가 발생하기 때문에 HTML 파일에서 Javascrip 코드를 <body> 태그 하단에 위치시켜 주는 것이 좋습니다.

HTML 요소들이 script  로딩 지연으로 인해 렌더링에 지장 받는 일이 발생하지 않아 페이지 로딩 시간 단축에도 좋습니다.

 

 

 

 

 

 

 

reference.

브라우저는 어떻게 동작하는가?(2012).https://d2.naver.com/helloworld/59361

[CS] 웹 브라우저는 어떻게 작동하는가?.뺑슨 개발블로그.(2021.08).23.05검색.https://bbangson.tistory.com/87

브라우저 동작 원리.개발일지.(2023.01).https://puringles.tistory.com/309

 

 

 

 

 

 

 

Comments