npm install -g lighthouse
lighthouse <url>
lighthouse --help
Lighthouse 노드 모듈을 이용해 동적으로 프로그래밍하여 페이지 검사 리포트를 생성할 수도 있다. 이를 이용해 성능 테스트를 자동화할 수 있다
웹 성능을 측정한다. 화면에 컨텐츠가 표시되는데 시간이 얼마나 걸리는지, 표시된 후 사용자와 상호작용하기까지 얼마나 걸리는지, 화면에 불안정한 요소는 없는지 등을 체크한다.
웹 접근성을 체크한다. 대체 텍스트를 작성했는지, 배경색과 컨텐츠 색상의 대비가 충분한지, 적절한 WAI-ARIA 속성을 사용했는지 등을 체크한다.
웹 표준 모범 사례를 잘 따르고 있는지 체크한다. HTTPS 프로토콜을 사용하는지, 콘솔 창에 오류가 표시되고 있는지 체크한다.
검색 엔진 최적화 부분을 체크한다. 애플리케이션의 robots.txt가 유효한지, <meta> 요소는 잘 작성되어 있는지 체크한다.
모바일 애플리케이션으로도 잘 작동하는지 체크한다. 앱아이콘을 제공하는지, 스플래시 화면이 있는지, 화면 크기에 맞게 컨텐츠를 적절하게 배치했는지 등을 점수가 아닌 체크리스트로 확인한다.
Opportunities 항목에서는 웹 페이지의 개선점을 찾아준다.
아래의 항목들은 네이버의 웹 페이지를 분석했을 때 나온 항목들이다.
WebP 및 AVIF와 같은 차세대 이미지 형식을 사용하면 이미지 파일 크기를 더욱 줄일 수 있다고 알려주고 있다.
큰 사이즈의 애니메이션 GIF를 동영상으로 대체할 것을 권고하고 있다. 큰 GIF는 애니메이션 콘텐츠를 전달하는 데 비효율적이므로 비디오로 변환하면 사용자의 대역폭을 크게 절약할 수 있다. 데이터를 절약하기 위해 애니메이션은 MPEG4/WebM 비디오를 적용할 것을 권고하고 있다.
사용하지 않는 JavaScript를 줄이면 페이지 로드 속도를 높이고 방문자의 사용자 경험을 개선할 수 있다. 그리고 사용자가 필요로 할 때까지 스크립트 다운로드를 연기하도록 구현하기.
2KiB 이상 절약할 수 있는 미사용 CSS를 제거하여 필요한 데이터양을 줄일 것을 권고하고 있다.
효율적으로 이미지를 인코딩하라고 권고하고 있다. 페이지 요청을 볼 때 HTML, CSS 또는 JavaScript 파일에 비해 이미지가 전체 페이지 크기의 대부분을 차지할 가능성이 높다.
이러한 이미지를 압축하지 않으면 브라우저가 이미지를 다운로드 하는 데 더 많은 시간을 소비해야 하므로 대역폭이 낭비되고 페이지 로드 시간이 늘어난다.
사용자가 당장 필요로하는 리소스를 인라인하고, 당장 필요로 하지 않는 리소스는 연기하고, 사용하지 않는 항목은 제거하라고 권고하고 있다.
중요한 코드는 인라인 태그로 이동하고, 당장 필요로 하지 않는 코드는 async와 defer 속성을 이용하여 표시할 수 있다.