데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      OpenLab 2기 - 웹 프론트엔드 성능 최적화 : 2번째 스터디 (1장 블로그 최적화 1편)

      myungbin.son 24.10.06
      420 5 0
      DEVOTEE 요약
      본 블로그는 Lighthouse라는 오픈소스 자동화 도구를 이용하여 웹 페이지의 성능을 최적화하는 방법을 설명합니다. Lighthouse의 정의와 사용 방법, 그리고 성능 점수를 구성하는 여러 항목들에 대해 알아보고, 특히 이미지 최적화를 통해 성능을 향상시키는 과정을 다룹니다. 예시로 이미지 사이즈를 조절하여 Lighthouse 성능 점수를 개선하는 과정을 통해 실제 코드 수준에서의 최적화 방법을 제시합니다.

      <프론트엔드 성능 최적화 가이드> 책을 토대로 Openlab 웹 프론트엔드 최적화 스터디에 참여해 발표한 내용을 정리했습니다.


      1장 블로그 최적화 서비스 최적화 챕터 중

      • Lighthouse 활용

      • 이미지 최적화

      파트를 맡아 Lighthouse의 정의 및 로직, 사용 방법과 결과를 공유드리도록 하겠습니다.

      Lighthouse란

      Lighthouse의 정의는 아래와 같습니다.

      Lighthouse is an opensource, automated tool for improving the quality of web pages.

      이와 같이 웹 페이지의 성능을 개선하고, 측정하기 위해 Lighthouse를 다양한 방법으로 사용할 수 있습니다.

      사용 방법은 아래와 같습니다.

      • Chrome Devtools Lighthouse 탭

      • Github에서 Lighthouse CLI 사용커스텀 활용, 튜닝 가능

      • Node module로 사용 등

      일반적으로 Chrome Devtools에 진입해 Lighthouse 탭으로 들어가 확인을 하지만,

      추가로 CLI를 사용해 튜닝하거나, node modules로 추가해 node app을 만들어 사용할 수도 있습니다.

      Lighthouse 평가 지표

      Lighthouse는 총 4가지 지표들로 평가되는데요, 아래와 같습니다.

      프론트엔드 성능 최적화.009.png

      저희는 Performance 탭을 중심으로 알아볼 예정입니다.

      PWA 항목은 더이상 Lighthouse 탭에서 평가되지 않지만, 최근까지 Lighthouse에서 평가해 주던 항목 중 하나입니다.

      프론트엔드 성능 최적화.010.png

      이와 같이, Performance 탭에서 측정된 5가지 항목을 종합해 점수를 내는 걸 확인할 수 있습니다.

      각각의 평가 지표에 대해서 자세히 알아보겠습니다.

      Performance

      Lighthouse는 아래와 같이 총 5가지 항목으로 Performance 점수를 구성합니다.

      프론트엔드 성능 최적화.011.png

      FCP(First Contentful Paint) - 10%

      FCP는 사용자가 페이지를 처음 탐색한 시점부터 페이지 콘텐츠의 일부가 화면에 렌더링된 시점까지의 시간을 측정합니다.

      프론트엔드 성능 최적화.012.png

      Speed Index - 10%

      속도 색인은 페이지 로드 중 콘텐츠가 시각적으로 표시되는 속도를 측정합니다.

      프론트엔드 성능 최적화.013.png

      TBT(Total Blocking Time) - 30%

      TBT는 페이지가 마우스 클릭, 화면 탭 또는 키보드 누름과 같은 사용자 입력에 응답하지 못하도록 차단된 총 시간을 측정합니다.

      프론트엔드 성능 최적화.014.png

      LCP(Largest Contentful Paint) - 25%

      사용자가 처음 페이지로 이동했을 때를 기준으로 표시 영역에 표시되는 가장 큰 이미지, 텍스트 블록, 동영상 등의 렌더링 시간을 측정합니다.

      프론트엔드 성능 최적화.015.png

      추가 자료

      Cumulative Layout Shift - 25%

      페이지의 전체 수명 주기 동안 발생하는 모든 예상치 못한 레이아웃 변경에 대한 최대 버스트의 레이아웃 변경 점수를 의미합니다.

      프론트엔드 성능 최적화.019.png

      추가 자료


      이렇게 Lighthouse의 평가 항목에 대해서 알아보았습니다.

      Lighthouse가 점수를 내고, 개선을 위해 제안하는 항목들을 잘 이해하고 활용하면 웹 성능을 개선할 수 있습니다.

      Lighthouse 실행

      자 이제 블로그 웹 사이트에서 직접 Lighthouse를 실행해보고, 측정 결과를 토대로 성능 향상 방법을 찾아 보겠습니다.

      프론트엔드 성능 최적화.025.png

      우측에는 개선하기 위한 방법들이 적혀 있습니다.

      'Properly size images'문제를 개선해, 성능을 향상해 보겠습니다.

      프론트엔드 성능 최적화.026.png

      developer tab에서 확인하면 img를 unsplash에서 불러오는 것을 확인할 수 있고,

      렌더링된 사이즈는 120 x 120px인데 비해 1200 x 1200px의 이미지를 불러오는 것을 확인할 수 있습니다.


      이를 해결하기 위해 현재 블로그 앱에서 이미지를 불러오는 방법을 살펴보도록 하겠습니다.

      프론트엔드 성능 최적화.028.png

      위와 같은 로직으로 불러옴을 확인했습니다. 아래와 같은 fetch를 호출하는 부분을 살펴 보면

      프론트엔드 성능 최적화.029.png

      위와 같이 이미지를 불러오고 있습니다.

      실제 필요한 이미지의 사이즈인 120 x 120px로 불러오는 코드로 고쳐야 하는데, 레티나 디스플레이 등 더 섬세한 화면 표시를 하는 화면을 고려해, 240 x 240px로 불러오도록 코드를 고쳐 보겠습니다.

      프론트엔드 성능 최적화.030.png

      코드를 고치고, 변경된 코드 성능이 향상되었는지 살펴보겠습니다.

      프론트엔드 성능 최적화.031.png

      Network 탭에서 Img payload를 확인해보면 payload가 줄면서 Content download 시간을 포함해 더 적은 용량을 빠른 시간 내에 불러올 수 있었고, 이는 결과적으로

      프론트엔드 성능 최적화.032.png

      Lighthouse 탭의 분석에서도 'Properly size images'가 사라진 것을 확인할 수 있습니다.



      이와 같이 Lighthouse를 사용해 웹 페이지의 Performance에 영향을 미치는 요인과 점수를 확인할 수 있었고,

      점수를 향상시키기 위한 분석들을 얻었습니다.


      이러한 분석을 토대로 개선하기 위해 코드를 살펴보고, payload를 줄이기 위해 이미지 사이즈를 조절하며 실제로 코드 수준에서 성능을 개선하는 과정까지 살펴보았습니다.

      출처

      웹 프론트엔드 성능 최적화 가이드 예제

      Ligthouse Github

      Chrome developer

      Web.dev

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      myungbin.son 님의 최신 블로그

      더보기