웹사이트 성능 최적화하기 with LightHouse

2022. 4. 13. 21:49·React/React Tech
목차
  1. LightHouse
  2. 성능 측정
  3. 성능 향상
  4. Reduce unused JavaScript
  5. ​이미지 크기 최적화
  6. 접근성 향상
  7. 결과

웹 개발 에서는 특히 성능이 중요하다. 어떤 부분이 개발한 웹에서 부족한지, 보완할 점은 무엇인지를 알기 위해 성능 측정을 해보자.

 

 

LightHouse

 

 

구글에서 개발한 웹 성능 측정기이다. 크롬의 개발자도구에 기본으로 내장되어 있어 F12 - LightHouse로 작동시킬 수 있다.

 

성능 측정

한창 프로젝트로 진행 중인 웹사이트를 측정해보았다. 성능과 접근성이 상당히 낮게 나온다.

 

아래쪽에서 원인과 해결 방법을 상세하게 알려준다. 따라서 한번 수정해보자.

 

성능 향상

Reduce unused JavaScript

React는 기본적으로 SPA(Single Page Application)이다. 웹 사이트의 전체 페이지를 하나의 페이지에 담아 동적으로 화면을 변경하며 표현하는 것이다. 이러한 동작을 위해 하나의 파일에 모든 로직이 담기게 되는데 이에 따라 최초 로딩 시간이 길어지게 된다.

당장에 사용하지 않는 코드가 읽어진다는 뜻이다.

 

코드 스플리트를 적용해 해당 부분을 해결하고 성능을 향상할 수 있다.

 

[React] React.Lazy() (Code Splitting)

Code Splitting React는 기본적으로 SPA(Single Page Application)이다. SPA (Single Page Application) 웹 사이트의 전체 페이지를 하나의 JS 파일에 담아 액션에 따라 동적으로 화면을 변경하며 표현하는 방식이..

muhly.tistory.com

 

​이미지 크기 최적화

이미지 또한 컴포넌트 분리 및 Lazy를 적용하는 작업을 통해 비동기적으로 로딩될 수 있도록 하자. 또한 기본적으로 이미지의 품질을 낮추고 이미지의 크기를 정확히 명시해주어야 한다.

 

 

접근성 향상

접근성은 어떠한 장애가 있는 사람도 동등하게 웹에 접근하여 사용할 수 있게 하는 것이다.

위에서 accessible name과 alt가 정의되지 않았다고 알려주고 있는데, 두 가지 모두 보이스 오버와 관련된 항목들이다.

 

특히, alt 속성은 반드시 작성되도록 권장되는 속성이므로 잊지 말고 img 태그 사용시 작성하도록 하자.

 

 

결과

여러가지로 최적화를 한 결과 성능을 약 62%, 접근성을 약 20%정도 향상시킬 수 있었다. 사실 이 지표는 컴퓨터 환경에 따라 점수가 변화하니 절대적인 지표는 아니니 애플리케이션에서 부족한 부분을 보완하고 수치는 참고정도로만 생각하자!

저작자표시 비영리 변경금지 (새창열림)

'React > React Tech' 카테고리의 다른 글

[React] 다국어 변환 라이브러리 i18n  (0) 2022.06.02
[React] Redux Thunk (미들웨어)  (0) 2022.05.03
[React] Redux 이해하기  (0) 2022.04.17
[React] React.Lazy() (Code Splitting)  (0) 2022.04.11
  1. LightHouse
  2. 성능 측정
  3. 성능 향상
  4. Reduce unused JavaScript
  5. ​이미지 크기 최적화
  6. 접근성 향상
  7. 결과
'React/React Tech' 카테고리의 다른 글
  • [React] 다국어 변환 라이브러리 i18n
  • [React] Redux Thunk (미들웨어)
  • [React] Redux 이해하기
  • [React] React.Lazy() (Code Splitting)
박유상의 개발블로그
박유상의 개발블로그
개발블로그
  • 박유상의 개발블로그
    박유상의 개발블로그
    박유상의 개발블로그
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    CSS
    알고리즘
    Redux
    플러터 웹
    Lingory
    map
    Python
    플러터
    웹
    파이썬
    탐욕법
    프로그래머스
    useTranslation
    포트폴리오
    JSON
    TypeScript
    flutter web
    자바스크립트
    DART
    useState
    DP
    github
    Firebase
    리액트
    useRef
    HTML
    JavaScript
    링고리
    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박유상의 개발블로그
웹사이트 성능 최적화하기 with LightHouse

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.