이전에 접속한 적이 있는 페이지이고, 캐싱이 적용되었다면 별도의 DNS 요청없이 URL을 띄울 수 있음
호스트의 도메인 이름을 실제 IP 주소로 변환하기 위해 DNS에 요청. IP 주소의 서버에게 리소스를 요청하여 받아올 준비
서버로부터 받아온 파일 중 HTML과 CSS를 각각 DOM Tree, CSSOM으로 파싱
DOM Tree와 CSSOM을 연결하는 Attachment 작업을 통해 렌더 트리를 생성
렌더 트리는 실제 페이지에서 사용되는 노드만을 포함, 루트부터 탐사하면서 해당 노드에 일치하는 스타일을 연결
렌더 트리를 바탕으로 상대값을 절대값으로 변환하고 페이지 내의 실제 위치를 계산
루트부터 탐사하면서 노드의 화면 상 실제 위치(px)를 계산
페인트 메소드를 호출하여 렌더 트리의 각 노드를 화면에 실제 그릴 수 잇는 레이어를 생성(래스터화)
생성된 개별 레이어들을 합성하여 렌더링(완성)
HTML을 파싱할 때, css나 js를 만나게 되면, HTML 파싱을 중단하고 해당 파일을 파싱하거나 다운로드 후 실행함 => HTML 파싱을 차단하는 요소를 블록 차단 리소스라고 함
외부 모듈에서 필요한 기능만을 import
각각의 이미지 파일을 서버로 요청하는 것보다 이미지를 하나로 묶어 한 번의 리소스 요청을 통해 가져와 background-position 속성으로 원하는 부분만 표시하는 기법
사용자가 스크롤을 내려야 보이는 이미지의 경우 지연 로딩을 통해 리소스 요청을 줄일 수 있음
webpack 등 모듈 번들러로 여러 개의 js 파일을 하나의 파일로 번들링. webpack의 경우 공통 기능 단위로 js를 code splitting
style 태그로 포함하는 내부 스타일시트를 사용하여 외부 css 요청 횟수를 줄일 수 있음
어플리케이션을 빠르게 처리하기 위해 클라이언트에서 서버로 정적 컨텐츠(JS, CSS, 이미지 등)를 요청할 때, 클라이언트(혹은 서버) 캐시에 저장해두고, 해당 컨텐츠를 재호출할 때 서버 요청을 통하지 않고 캐시에서 가져와 활용가능
사용자가 DOM 요소를 추가, 수정하거나 위치에 영향을 미치는 속성을 수정하면, 각 요소들의 화면 상 실제 위치를 계산하는 작업이기 때문에 비용이 큼