Skip to content

초기 번들 최적화 분석 ​

목표와 측정 기준 ​

이 개선은 로그인 후 기본 홈 경로에서 즉시 내려받는 JavaScript 진입 청크를 500kB 미만으로 낮추는 것을 목표로 한다. 수치는 Vite 프로덕션 빌드의 minify 이후 비압축 크기이며, index.html이 직접 참조하는 JavaScript 파일을 초기 진입 청크로 정의한다.

측정 단계초기 진입 청크gzip변화
기존 main (0dc3ba4)1,089,318B301.93kB기준
관리자·디렉터리 라우트 분리844,698B262.84kB관리자 전용 코드 분리
관리자·디렉터리·에디터 분리437,101B132.80kB목표 달성

적용한 분리 경계 ​

/admin과 /admin/directory-operations는 React.lazy 및 Suspense를 통해 각각 독립 청크로 전환했다. 따라서 게시판 기본 경로를 방문하는 사용자는 관리자, 권한, 첨부파일 관리, API 관리 UI를 초기 다운로드하지 않는다. 공통 라우트 대기 화면은 접근 가능한 role="status"를 제공한다.

홈 화면에서 사용하는 Tiptap 편집기는 게시물 작성 또는 인라인 편집을 시작할 때만 필요하다. 두 편집 진입점의 정적 import를 제거하고 같은 RichTextEditor 동적 import로 전환했다. 그 결과 편집기와 Tiptap 생태계는 RichTextEditor 지연 청크로 분리되며, 기본 열람 흐름에는 포함되지 않는다.

지연 청크크기로드 시점
관리자 화면233,475B/admin 진입 시
디렉터리 운영 화면10,613B/admin/directory-operations 진입 시
리치 텍스트 편집기407,466B게시물 작성 또는 편집 UI 표시 시
비디오 라이브러리11,845B/videos 진입 시

판단과 후속 권고 ​

이번에는 manualChunks로 단순히 라이브러리를 인위적으로 나누지 않았다. 해당 방식은 개별 파일 크기 경고를 낮출 수 있지만, 홈 화면이 여전히 모든 분리된 공급자 청크를 요청한다면 실제 초기 전송량을 줄이지 못할 수 있다. 대신 경로 및 상호작용에 따라 필요해지는 기능을 지연 로딩해 초기 요청 집합 자체를 줄였다.

향후 초기 진입 청크가 다시 증가하면 다음 순서로 검토한다.

우선순위방안기대 효과와 주의점
1정적 import 감사홈 경로에 새로 추가되는 대형 라이브러리·관리 전용 기능을 다시 지연 경계 뒤로 이동한다.
2빌드 크기 예산 자동화CI에서 HTML이 참조하는 초기 JavaScript 청크가 500kB 이상이면 실패하도록 검사한다.
3manualChunks의 제한적 도입React 및 재사용 공급자 코드를 캐시 가능한 청크로 구분한다. 다만 청크 수 증가와 초기 요청 총량을 함께 측정한다.
4대형 기능의 세부 분리관리자 내부의 API 탐색기·감사 화면처럼 탭별로 사용 빈도가 낮은 기능을 한 단계 더 나눈다.

운영에서 반드시 확인할 지표는 단일 파일 크기만이 아니라, 첫 화면에서 브라우저가 실제로 요청한 JavaScript 총량과 사용자 상호작용 시 지연 청크가 준비되는 체감 시간이다.