FE/리뷰
[모던 리액트 딥다이브] 13장 웹페이지의 성능을 측정하는 다양한 방법
따봉치치
2024. 9. 20. 17:03
728x90
애플리케이션에서 확인하기
- create-react-app을 통해 만들어지는 reportWebVitals파일
- web-vitals라이브러리로 누적 레이아웃 이동, 최초 입력 지연, 최초 콘텐츠풀 페인트, 최대 콘텐츠풀 페인트, 첫 바이트까지의 시간 측정 가능
- create-next-app을 통해 만들어지는 앱의 성능 측정 메서드 NextWebVitalsMetric
- 핵시 지표 외에도 Next.js에 특화된 사용자 지표 제공
- Next.js-hydration : 페이지가 서버 사이드에서 렌더링되어 하이드레이션하는 데 걸리는 시간
- Next.js-route-change-to-render : 페이지가 경로를 변경한 후 페이지를 렌더링을 시작하는 데 걸리는 시간
- Next.js-render : 경로 변경이 완료된 후 페이지를 렌더링하는 데 걸리는 시간
구글 라이트하우스
- 구글에서 제공하는 웹 페이지 성능 측정 도구
- 오픈소스로 운영됨
- 핵심 웹 지표뿐만 아니라 접근성, PWA, SEO 등 웹페이지를 둘러싼 다양한 요소들을 측정하고 점검할 수 있음
- 탐색모드
- 페이지에 접속했을 때부터 페이지 로딩이 완료될 때까지의 성능을 측정하는 모드
- 페이지를 처음부터 다시 불러와서 페이지 로딩이 끝날 때까지 각각의 지표를 수집함
- 지표
- 성능
- 웹페이지의 성능과 관련된 지표를 확인할 수 있음
- 핵심 웹 지표인 최초 콘텐츠풀 페인트, 최대 콘텐츠풀 페인트, 누적 레이아웃 이동
- Time to interactive : 페이지에서 사용자가 완전히 상호작용할 수 있을 때까지 걸리는 시간 측정
- Speend index : 페이지가 로드되는 동안 콘텐츠가 얼마나 빨리 시각적으로 표시되는지 계산
- Toatl Blocking Time : 메인 스레드에서 특정 시간 이상 실행되는 작업. 실행되는 긴 작업을 모아서 총 차단 시간을 구함
- 접근성
- 웹 접근성 : 장애인 및 고령자 등 신체적으로 불편한 사람들이 일반적인 사용자와 동등하게 웹페이지를 이용할 수 있도록 보장하는 것
- 권장사항
- 웹사이트를 개발할 때 고려해야 할 요소들을 얼마나 지키고 있는지 확인
- 보안, 표준 모드, 최신 라이브러리, 소스 맵 등
- CSP가 XSS 공격에 효과적인지 확인 (CSP : Content Security Policy, 웹 사이트에서 호출할 수 있는 컨텐츠를 제한하는 정책)
- 감지된 JavaScript 라이브러리
- HTTPS 사용
- 페이지 로드 시 위치정보 권한 요청 방지하기
- 페이지 로드 시 알림 권한 요청 방지하기
- 알려진 보안 취약점이 있는 프런트엔드 자바스크립트 라이브러리를 사용하지 않음
- 사용자가 비밀번호 입력란에 붙여넣을 수 있도록 허용
- 이미지를 올바른 가로세로 비율로 표시
- 이미지가 적절한 해상도로 제공됨
- 페이지에 HTML Doctype 있음
- 문서 집합을 제대로 정의함
- 지원 중단 API 사용하지 않기
- 콘솔에 로그된 브라우저 오류 없음
- Chrome Devtools의 Issuses 패널에 문제없음
- 페이지에 유효한 소스 맵이 있음
- font-display : optional을 사용하는 폰트가 미리 로드됨
- 검색 엔진 최적화
- 구글과 같은 검색엔진이 쉽게 웹페이지 정보를 가져가서 공개할 수 있도록 최적화돼 있는지를 확인
- 성능
- 기간 모드
- 실제 웹페이지를 탐색하는 동안 지표 측정
- 흔적
- 웹 성능을 추적한 기간을 성능 탭에서 보여줌
- 상세하게 시간의 흐름에 따라 어떻게 웹페이지가 로딩됐는지 보여줌
- 트리맵
- 페이지를 불러올 때 함께 로딩한 모든 리소스를 함께 모아서 볼 수 있는 곳
- 웹페이지의 전체 자바스크립트 리소스 중 어떠한 파일이 전체 데이터 로딩 중 어느 정도를 차지했는지를 비율로 확인할 수 있음
- 실제 불러온 데이터의 크기를 확인할 수 있음
- 로딩한 리소스에서 사용하지 않은 바이트의 크기를 확인할 수 있음
- 스냅샷
- 특정 페이지 특정 상태에서 성능 분석할 수 있음
WebPageTest
- 웹사이트 성능을 분석하는 도구로 가장 널리 알려진 도구
- Site Performance : 웹사이트의 성능 분석을 위한 도구
- Core Web Vitals : 웹사이트의 핵심 지표를 확인하기 위한 도구
- Lighthouse : 구글 라이트하우스 도구
- Visual Comparison : 2개 이상의 사이트를 동시에 실행해 시간의 흐름에 따른 로딩 과정을 비교하는 도구
- Traceroute : 네트워크 경로를 확인하는 도구
크롬 개발자 도구
- 문제를 더 자세하게 들여다 보기 위해 사용함
- 시크릿 창으로 웹사이트를 여는 것이 좋음
- 성능 통계
- Insights
- 성능을 측정한 기간 동안 발생한 이벤트 중 눈여겨봐야 할 내용을 시간의 흐름에 따라 모아서 보여줌
- 핵심 웹 지표 : FCP, LCP, Dom Content Loaded가 언제 일어났는지 보여줌
- Performance Measure : User Timing API로 측정한 지표들 확인 가능
- Long Task
- Rendering blocking CSS : 렌더링을 막는 CSS 확인 가능
- 중요하지 않은 스타일이라면 link rel="preload" as "style"로 스타일을 비동기적으로 요청하기
- 미디어 쿼리를 활용해 디바이스에 필요한 스타일만 불러옴
- CSS 내부의 띄어쓰기, 줄바꿈 등을 압축해 최대한 크기를 줄임
- Forced Style recalculation : 스타일 재계산
- 메인메뉴
- 성능을 측정한 기간 동안 무슨 일이 일어나는지 확인할 수 있는 다양한 기능 제공
- Insights
- 성능
- 메뉴
- 성능 탭에서 사용할 수 있는 메뉴 확인
- 요약
- 측정 기간의 CPU, 네트워크 요청, 스크린숏, 메모리 점유율 등
- 네트워크
- 성능 측정 기간 동안에 발생한 모든 네트워크 요청 확인 가능
- Web vitals
- 핵심 웹 지표 시점 확인
- 소요 시간과 기본
- 시간의 흐름에 따라 메인 스레드의 작업은 어떻게 변화했는지, 자바스크립트 힙 영역은 어떻게 변화하는지 확인
- 메뉴
728x90