단진
대체로 맑음
단진
  • 분류 전체보기 (162)
    • 개발 (112)
      • 회고 (25)
      • 개발과정 (28)
      • 개념 (14)
      • JavaScript (11)
      • TypeScript (12)
      • 알고리즘 (4)
      • GitHub (4)
      • 오류 (9)
      • TMI (5)
    • 일상 (15)
      • 사진 및 여행 (6)
      • 책 소개 (4)
      • 기타 TMI (5)
    • IT (16)
      • 개념 (5)
      • 데이터베이스 (6)
      • 딥러닝 (1)
      • TMI (4)
    • TMI (4)
      • 법률 TMI (4)
    • 보안 (15)
      • Dreamhack (5)
      • Root Me (10)
hELLO · Designed By 정상우.
단진

대체로 맑음

[AlgoITNi] 홈 화면 성능 개선하기: 6. 코드 스플리팅 (3)
개발/개발과정

[AlgoITNi] 홈 화면 성능 개선하기: 6. 코드 스플리팅 (3)

2024. 2. 28. 13:45

문제점

기존 (개발환경)

많은 코드들을 분리했지만 아직 uuid가 함께 다운로드 되고 있으며 Home에 의해 다운로드 되고 있는 파일 중 가장 큰 크기를 차지하고 있다.

 

현재 홈에서 uuid가 필요한 경우는 방생성 버튼을 클릭했을 때 밖에 없다.

 

따라서, 버튼을 눌렀을 때 uuid와 관련된 코드를 받을 수 있도록 분할해본다.

// Home.tsx
import { v4 as uuidv4 } from 'uuid';

const handleMakeRoomClick = () => {
  const roomId = uuidv4();
  navigate(`/${roomId}`);
};

<Button.Default onClick={handleMakeRoomClick} fontSize="1.5vw">
  방생성
</Button.Default>

현재 코드 상태이며 파일의 최상단에서 uuid 라이브러리를 import 하고 있다.

 

개선 후

// Home.tsx
const handleMakeRoomClick = () => {
  import('uuid').then(({ v4: uuidv4 }) => {
    const roomId = uuidv4();
    navigate(`/${roomId}`);
  });
};

<Button.Default onClick={handleMakeRoomClick} fontSize="1.5vw">
  방생성
</Button.Default>

개선 (개발환경)

위와 같이 클릭 이벤트 핸들러가 실행되면서 동적으로 uuid에 관한 내용을 다운로드 받을 수 있도록 했다.

 

결과적으로 처음 Home이 렌더링 될 때 다운로드 되는 파일 목록에 더 이상 uuid가 없음을 확인할 수 있다.

(기존) 좌: 개발환경 / 우: 프로덕션
(개선) 좌: 개발환경 / 우: 프로덕션

결론

하지만, 단지 uuid과 관련된 몇 KB의 코드만 제외되는 수준이라 유의미한 변경점이 없다.

 

또한, 몇 KB의 uuid 코드를 다운로드 하는 동안 (로딩 페이지로 넘어가기 전) 잠깐의 로딩이 추가로 생기게 되어 UX의 저하가 예상된다.

 

결론적으로, uuid 라이브러리를 동적 import 하는 것에 대한 장점보다 단점이 더 많은 것으로 판단되어 해당 라이브러리에 대한 동적 import는 적용하지 않도록 했다.

저작자표시 (새창열림)

'개발 > 개발과정' 카테고리의 다른 글

React createElement로 리팩토링 하기 (권장 X)  (0) 2024.05.04
[AlgoITNi] 홈 화면 성능 개선하기: 7. 최종 결과  (0) 2024.04.02
[AlgoITNi] 홈 화면 성능 개선하기: 5. 코드 스플리팅 (2)  (0) 2024.01.27
[AlgoITNi] 홈 화면 성능 개선하기: 4. 이미지 최적화 (2)  (0) 2024.01.27
[AlgoITNi] 홈 화면 성능 개선하기: 3. 이미지 최적화 (1)  (0) 2024.01.27
    '개발/개발과정' 카테고리의 다른 글
    • React createElement로 리팩토링 하기 (권장 X)
    • [AlgoITNi] 홈 화면 성능 개선하기: 7. 최종 결과
    • [AlgoITNi] 홈 화면 성능 개선하기: 5. 코드 스플리팅 (2)
    • [AlgoITNi] 홈 화면 성능 개선하기: 4. 이미지 최적화 (2)
    단진
    단진

    티스토리툴바