웹
브라우저 렌더링 과정
탁재민
2024. 4. 19. 03:13
DNS 조회
- 사용자가 브라우저에 웹사이트 주소를 입력
- 브라우저가 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버에 쿼리 요청
- DNS 서버는 해당 도메인의 IP 주소를 찾아 응답
TCP 핸드셰이크와 TLS 협상(~HTTP/2.0)
- TCP 핸드셰이크 과정을 통해 서버와 연결
- TLS 협상을 통해 서버 인증과 암호화 실행
[TCP Handshak
3-Way-Handshak TCP/IP 프로토콜을 이용한 통신에서 데이터를 주고받기 전 연결 과정 순서 클라이언트는 서버에 접속을 요청하는 SYN(M) 패킷을 보낸다. 서버는 클라이언트의 요청 패킷을 받고 요청을
tak-fe.tistory.com](https://tak-fe.tistory.com/20)
[HTTP & HTTPS
HTTP 웹 상에서 클라이언트-서버가 데이터를 주고받기 위한 통신 프로토콜 html, css, js, 이미지, 폰트 등 전송 클라이언트 요청(requests) 서버 응답(responses) GET(요청), POST(작성), PUT(수정), PATCH(일부 수
tak-fe.tistory.com](https://tak-fe.tistory.com/24)
HTTP Get 요청
- 처음에 HTML 파일을 로드
- 이후 렌더링 과정에서 HTML 파일과 nested 파일에 포함된 css, js, 이미지 파일들을 요청
렌더링
- HTML을 처리하여 토큰화(<>, </> 기준으로 ), DOM 트리 생성
- 내가 작성한 HTML을 프로그래밍 언어가 접근할 수 있도록 만듬
async
defer
가 아닌<script>
태그 만나면 중지- Preload Scanner가 미리 자원 요청(css, async script, web fonts)
- CSS를 파싱 후, CSSOM 트리를 생성
- Render Tree 생성(CSSOM과 DOM을 결합)
- Layout (뷰포트 내에서 각 노드들의 정확한 위치와 크기를 계산)
- Paint(텍스트, 색깔, 경계, 그림자, 이미지 등을 픽셀로 변환)
- Compositing(페인팅 된 각각의 레이어를 합성해서 출력)
리렌더링
- js가 style을 바꾸면 다시 style 계산
- Reflow
- Reflow -> Repaint -> Recomposite 전부 일어남
- 뷰포트 크기 변경, 노드가 추가-삭제, 요소의 위치 크기-변경, 이미지 크기 변경
position
,width
,height
,margin
,padding
,border
,border-width
,font-size
,font-weight
,line-height
,text-align
,overflow
,text-align
,vertical-align
,white-space
,left
,top
...
- Repaint
- Repaint -> Recomposite 일어남
- 색 변화, 두께 변화
background
,text-decoration
,border-style
,border-radius
,box-shadow
,color
,line-style
,outline
,visibility
...
- Composite
- Recomposite만 일어남
transform
,opacity
,cursor
,perspective
...