최근에는 프론트엔드 성능 최적화에 대해 배우고 있는데, 올바른 약을 처방하고 성능 병목 현상을 찾아내기 위해서는 페이지 렌더링 과정을 이해하는 것이 필요합니다. 제가 본 몇 가지 내용을 여러분과 공유하겠습니다.
참고: 렌더러 이해
페이지 렌더링에는 다음과 같은 특징이 있습니다:
•단일 스레드 이벤트 폴링
•잘 정의되고 연속적이며 질서 있는 작업(HTML5 )
•단어 분할 및 DOM 트리 작성
•리소스 요청 및 사전 로드
•렌더링 트리 작성 및 페이지 그리기
구체적으로:
네트워크 해당 바이트에 도달하면 DOM 트리가 구성되기 시작합니다. UI를 업데이트하는 브라우저 스레드가 이를 담당합니다. 다음 상황이 발생하면 DOM 트리 구성이 차단됩니다.
•HTML 응답 흐름이 네트워크에서 차단됩니다
•언로드된 스크립트가 있습니다.
•스크립트 노드가 발견되었지만 이 오류가 발생했습니다. 여전히 언로드된 스타일 파일입니다
렌더링 트리는 DOM 트리에서 구축되며 스타일 파일에 의해 차단됩니다.
단일 스레드 이벤트 폴링을 기반으로 하기 때문에 스크립트와 스타일에 대한 차단이 없더라도 이러한 스크립트나 스타일을 구문 분석하고 실행하고 적용하면 페이지 렌더링이 차단됩니다.
페이지 렌더링을 차단하지 않는 일부 상황:
• defer 속성 및 async 속성 정의
• 일치하는 미디어 유형 스타일 파일 없음
• 파서 삽입 스크립트 노드를 통과하지 못했습니다. 또는 스타일 노드
아래 예를 들어 설명하겠습니다(완전한 코드) :