HTTP request:입력된 도메인 주소response:IP주소request:html문서 🤔HTTP Request웹서버는 웹브라우저에게, response: html문서결과
- 웹서버는 정적인 컨텐츠(html, css) 처리
웹서버는 WAS에게, 동적인 컨텐츠(jsp) 처리 요청하고 그 결과 웹서버로 전송
렌더트리(=DOM 트리 + CSSOM 트리) 생성/배치
- HTML 파싱(브라우저 렌더링 엔진은 HTML 파싱 + DOM 트리 구축) 시작
- if encounter link 태그, stop HTML 파싱, request CSS 파싱
- response : 서버로부터 CSS 파일을 내려받음
- 브라우저 렌더링 엔진은 CSS 파싱 + CSSOM 트리 구축
- if CSS 파싱 done, start HTML 파싱
- if encounter JS, start JS 파싱 (JS는 DOM API를 통해 DOM/CSSOM 변경가능, 변경된 DOM/CSSOM는 다시 렌더트리로 결합)
- 서버로부터 JS를 내려받음
- 브라우저의 자바스크립트 엔진은 JS 컴파일(Abstract Syntax Tree 생성 + AST를 바이트코드로 변환) + 실행
layout or reflow : 노드 위치/크기 계산
painting : 계산된 값을 실제 픽셀로 변환
브라우저는 화면에 웹페이지 내용물 출력
- Reflow : 렌더 트리를 재생성하는 과정
- Repaint : after Reflow, 재생성된 렌더 트리를 다시 그리는 과정 (color처럼 레이아웃 수치에 영향을 끼치지 않는 것은 reflow🙅 repaint 과정만🙆)
https://d2.naver.com/helloworld/59361
https://developer.mozilla.org/ko/docs/Learn/CSS/First_steps/How_CSS_works
https://watermelonlike.tistory.com/170
초기 렌더링 속도
https://toss.tech/article/faster-initial-rendering