
병목 코드, 코드 분할 & 지연로딩, 텍스트 압축
정규식 엔진은 효율적인 알고리즘 기반 → 입력이 커져도 비교적 빠르게 동작
node_modules/react-syntax-highlighter 내부의 refractor 패키지 크기가 큼"dependencies": {
...
"refractor": "^2.4.1"
}
react-syntax-highlighter: 코드 블록 하이라이팅 라이브러리코드 분할이란?
하나의 번들 파일을 여러 개로 나눠 → 필요한 곳에서만 **지연 로딩(Lazy Loading)**하는 기법
const ListPage = lazy(() => import('./pages/ListPage/index'));
const ViewPage = lazy(() => import('./pages/ViewPage/index'));
<Suspense fallback={<div>로딩 중...</div>}>
<Switch>
<Route path="/" component={ListPage} exact />
<Route path="/view/:id" component={ViewPage} exact />
</Switch>
</Suspense>
결과: 기존 하나의 큰 chunk → 각 경로에 필요한 시점에 개별 chunk 로드됨
Webpack이 코드를 작은 파일 단위로 분할할 때 만들어지는 개별 파일.
chunk파일은 사용자의 특정 액션에 따라 로드됨.
페이지 단위로 lazy 로딩 적용이 가장 효과적이다!!
| 항목 | 설명 |
|---|---|
| 대상 | HTML, CSS, JS 등 텍스트 기반 파일 |
| 효과 | 전송 시간 단축, 용량 절감, 로딩 속도 개선 |
| 처리 | 대부분의 빌드 도구가 자동 처리 |
HTML, CSS, JS 등에 효과적인 압축 알고리즘. 거의 모든 브라우저가 지원!
Accept-Encoding: gzip, deflate 포함Content-Encoding: gzip| 알고리즘 | 장점 | 단점 |
|---|---|---|
| Gzip | 가장 널리 사용됨 | 기본 압축률 |
| Deflate | 빠른 처리 속도 | Gzip보다 호환성 낮음 |
| Brotli | 압축률 가장 높음 (20~30% ↑) | CPU 사용량 큼, 일부 브라우저 호환성 문제 |
| 작업 | 설명 |
|---|---|
| Minification | 줄바꿈, 공백, 주석 제거 + 변수명 축소 |
| Tree Shaking | 사용하지 않는 모듈 제거 |
| 난독화 | 코드 흐름 및 변수명을 무작위화 → 보안성 향상 |
React는
Webpack,Babel,Terser등을 통해 빌드 과정에서 자동으로 수행