기술면접에서 단골로 물어보는 질문이라고 한다. 비슷한 유형으로 주소창에 google.com
을 입력했을 때 일어나는 일이 이와 같다.
얕게 알고 있었지만 이번 기회에 정확한 개념을 숙지하고 가야겠다.
우리가 흔히 인터넷에 접속할 때 사용하는 Chrome, Safari, Firefox, Microsoft Edge 등을 말한다.
브라우저마다 다르지만, 브라우저는 렌더링 엔진을 가지고 있다.
Chrome과 Microsoft Edge는 Blink(블링크), Safari는 Webkit(웹킷), Firefox는 Gecko(게코)라는 렌더링 엔진을 사용한다.
전체적인 과정은 크게 두 가지로 나눌 수 있다.
(브라우저 검색창에 'www.google.com'을 입력한 상태)
ISP(Internet Service Provider): KT, SK, LG 등
성능을 최적화하기 위해선 수신받은 HTML, CSS, JS파일들을 어떤 단계를 걸쳐 일어나는지를 파악한 후, 해당 과정들을 최소화하는 것이 매우 중요하다.
Parsing 단계에서 HTML 파일을 해석하여 DOM Tree를 구성하게 된다.
Parsing 중 HTML에 CSS가 포함되어 있다면 CSSOM Tree 구성 작업도 함께 진행하게 된다.
Style 단계에서 DOM tree와 CSSOM Tree를 매칭시켜 Render Tree를 구성한다.
❗이때 display:none 의 경우 Render Tree에서 제외된다.
Layout 단계에서는 Render Tree를 화면에 어떻게 배치해야 할 지 노드의 정확한 위치와 크기를 계산한다.
루트부터 노드를 순회하며, 크기 값을 %로 지정하였다면, Layout 단계에서 % 값을 계산해서 픽셀 단위로 변환한다.
Paint 단계에서는 Layout 단계에서 계산된 값을 이용해 Render Tree의 각 노드를 화면상의 실제 픽셀로 변환한다.
스타일이 복잡할수록 Paint 시간도 늘어난다.
❗Reflow & Repaint
특정 액션과 이벤트에 따라 발생
(Viewport가 변경되는 경우 포함)Reflow와 Repaint를 최대한 줄여야 해당 과정들을 다시 거치지 않기때문에 성능 최적화와 연결이 된다.
Reflow Repaint를 알아보자
Composite 단계에서 Paint 단계에서 생성된 레이어를 합성하여 실제 화면에 나타낸다.
Transform, opacity와 같은 요소들을 의미한다.
참고 자료
의외로 신입이 모르는 것! - 브라우저 렌더링 과정
브라우저의 렌더링 과정
브라우저 렌더링 과정 이해하기
주소창에 www.google.com을 입력했을 때 일어나는 과정
마이크로소프트 엣지와 구글 크롬의 7가지 차이점