--- id: FE-PERF-CODE-SPLIT-001 category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 1.0 tags: [performance, code-splitting, optimization, lazy-loading, suspense, bundling, vite, nextjs, core-web-vitals] last_reinforced: 2026-04-26 --- # Code Splitting and Frontend Performance Optimization (μ½”λ“œ μŠ€ν”Œλ¦¬νŒ…κ³Ό μ„±λŠ₯ μ΅œμ ν™”) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "ν•œκΊΌλ²ˆμ— μ „μ†‘λ˜λŠ” κ±°λŒ€ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€μ€ μ‚¬μš©μžμ˜ 기닀림을 κ³ ν†΅μœΌλ‘œ λ°”κΎΌλ‹€. λ²ˆλ“€μ„ 의미 μžˆλŠ” 쑰각(Chunks)으둜 λ‚˜λˆ„κ³  ν•„μš”ν•  λ•Œλ§Œ 호좜(On-demand)ν•˜μ—¬, 첫 ν™”λ©΄μ˜ 주인곡을 0.1μ΄ˆλΌλ„ 빨리 λ¬΄λŒ€μ— 올렀라" β€” 초기 λ‘œλ”© 속도와 λŸ°νƒ€μž„ λ°˜μ‘μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 핡심 μ „λž΅. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΆ”μΆœλœ νŒ¨ν„΄:** "Granular Bundling and Adaptive Resource Loading" β€” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό 라우트, μ»΄ν¬λ„ŒνŠΈ, 라이브러리 λ‹¨μœ„λ‘œ μ„ΈλΆ„ν™”ν•˜κ³  λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ μŠ€μΌ€μ€„μ— 맞좰 λ‘œλ”© μš°μ„ μˆœμœ„λ₯Ό μ‘°μ •ν•˜λŠ” νŒ¨ν„΄. - **핡심 μ΅œμ ν™” 기법:** - **Route-based Splitting:** μ‚¬μš©μžκ°€ ν˜„μž¬ 보지 μ•ŠλŠ” νŽ˜μ΄μ§€μ˜ μ½”λ“œλ₯Ό λ‘œλ“œν•˜μ§€ μ•Šλ„λ‘ λΌμš°ν„° μˆ˜μ€€μ—μ„œ μ§€μ—° λ‘œλ”©(`React.lazy`) 적용. - **Component-level Lazy Loading:** 무거운 μ„œλ“œνŒŒν‹° 라이브러리(차트, 에디터)λ‚˜ νŠΉμ • μƒν˜Έμž‘μš© ν›„μ—λ§Œ ν•„μš”ν•œ UI μš”μ†Œλ₯Ό 별도 청크둜 뢄리. - **Vendor Splitting (Manual Chunks):** 자주 λ³€κ²½λ˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 변경이 적은 μ™ΈλΆ€ 라이브러리(`react`, `react-dom`)λ₯Ό λΆ„λ¦¬ν•˜μ—¬ λΈŒλΌμš°μ € 캐싱 효율 κ·ΉλŒ€ν™”. - **Resource Prioritization:** `preload`, `prefetch` 힌트λ₯Ό ν™œμš©ν•˜μ—¬ λ‹€μŒμ— ν•„μš”ν•œ μžμ‚°μ„ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 미리 μ€€λΉ„. - **의의:** LCP와 INP μ§€ν‘œλ₯Ό 획기적으둜 κ°œμ„ ν•˜μ—¬ 검색 μ—”μ§„ μˆœμœ„μ™€ μ‚¬μš©μž μ „ν™˜μœ¨(Conversion Rate)을 λ™μ‹œμ— λ†’μž„. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** κ³Όκ±°μ—λŠ” HTTP/1.1 ν™˜κ²½μ—μ„œ μš”μ²­ 수λ₯Ό 쀄이기 μœ„ν•΄ ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ λ²ˆλ“€(One big bundle)이 μœ λ¦¬ν–ˆμœΌλ‚˜, ν˜„λŒ€ 정책은 HTTP/2 μ΄μƒμ˜ 닀쀑화(Multiplexing) ν™˜κ²½μ— μ΅œμ ν™”λœ '닀쀑 청크 μ •μ±…'을 ꢌμž₯함. - **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” 200KB μ΄μƒμ˜ 단일 JS 파일 생성을 κΈˆμ§€ μ •μ±…μœΌλ‘œ ν•˜λ©°, λͺ¨λ“  동적 μž„ν¬νŠΈ μ‹œ λ‘œλ”© μƒνƒœ(Loading Spinner/Skeleton) 제곡 정책을 μ˜λ¬΄ν™”ν•¨. ## πŸ”— 지식 μ—°κ²° (Graph) - [[JavaScript-Optimization-Patterns|JavaScript-Optimization-Patterns]], [[Largest-Contentful-Paint-LCP|Largest-Contentful-Paint-LCP]], [[Interaction-to-Next-Paint-INP|Interaction-to-Next-Paint-INP]], Vite-Build-Optimization, [[Modern-Frontend-Engineering-Architecture|Modern-Frontend-Engineering-Architecture]] - **Raw Source:** 00_Raw/μ½”λ“œ μŠ€ν”Œλ¦¬νŒ… 및 μ„±λŠ₯ μ΅œμ ν™”(Code Splitting & Performance Optimization).md