# [[Frontend Performance Optimization]] ## πŸ“Œ Brief Summary ν”„λ‘ νŠΈμ—”λ“œ μ„±λŠ₯ μ΅œμ ν™”λŠ” μ›Ήμ‚¬μ΄νŠΈμ˜ λ‘œλ”© 속도, μƒν˜Έμž‘μš©μ„±, μ‹œκ°μ  μ•ˆμ •μ„±μ„ ν–₯μƒμ‹œμΌœ μ‚¬μš©μž κ²½ν—˜κ³Ό 검색 μ—”μ§„ μˆœμœ„(SEO)λ₯Ό κ·ΉλŒ€ν™”ν•˜λŠ” 일련의 κ³Όμ • 및 기술적 μ‹€μ²œμ„ μ˜λ―Έν•œλ‹€ [1-3]. 2025년을 κΈ°μ€€μœΌλ‘œ 핡심 μ›Ή λ°”μ΄νƒˆ(Core Web Vitals)의 μ΅œμ‹  μ§€ν‘œμΈ LCP, INP, CLSλ₯Ό μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ 이미지 및 λ¦¬μ†ŒμŠ€ μ΅œμ ν™”, μ½”λ“œ λΆ„ν• (Code Splitting), λ Œλ”λ§ 차단 μš”μ†Œ 제거, 효율적인 λ Œλ”λ§ μ „λž΅(SSR, SSG) 등이 λ™μ›λœλ‹€ [1, 4-7]. 이λ₯Ό μ„±κ³΅μ μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ μ›Ήμ‚¬μ΄νŠΈμ˜ μ΄νƒˆλ₯ μ„ 쀄이고 ꢁ극적으둜 μ „ν™˜μœ¨ 및 μˆ˜μ΅μ„±μ„ λŒ€ν­ 높일 수 μžˆλ‹€ [8, 9]. ## πŸ“– Core Content * **핡심 μ›Ή λ°”μ΄νƒˆ(Core Web Vitals) μ΅œμ ν™” μ „λž΅:** * **LCP (Largest Contentful Paint):** νŽ˜μ΄μ§€μ˜ μ£Όμš”(κ°€μž₯ 큰) μ½˜ν…μΈ κ°€ μ‹œκ°μ μœΌλ‘œ λ‘œλ“œλ˜λŠ” μ‹œκ°„μ„ μΈ‘μ •ν•˜λ©°, 2.0초 λ˜λŠ” 2.5초 μ΄λ‚΄λ‘œ μ΅œμ ν™”ν•΄μ•Ό ν•œλ‹€ [2, 5, 10]. LCPλ₯Ό κ°œμ„ ν•˜λ €λ©΄ WebPλ‚˜ AVIF와 같은 μ°¨μ„ΈλŒ€ 이미지 포맷 μ‚¬μš©, μ€‘μš” λ¦¬μ†ŒμŠ€ 사전 λ‘œλ“œ(preload), CDN(μ½˜ν…μΈ  전솑 λ„€νŠΈμ›Œν¬) ν™œμš©, μ„œλ²„ 응닡 μ‹œκ°„(TTFB) μ΅œμ ν™”, 그리고 μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR) 적용이 ν•„μš”ν•˜λ‹€ [11-15]. * **INP (Interaction to Next Paint):** 2025λ…„λΆ€ν„° κΈ°μ‘΄ FIDλ₯Ό λŒ€μ²΄ν•œ μ§€ν‘œλ‘œ, λ²„νŠΌ ν΄λ¦­μ΄λ‚˜ ν‚€λ³΄λ“œ μž…λ ₯ λ“± μ‚¬μš©μž μƒν˜Έμž‘μš© ν›„ λΈŒλΌμš°μ €κ°€ 화면을 μ—…λ°μ΄νŠΈν•  λ•ŒκΉŒμ§€μ˜ 전체 μ§€μ—° μ‹œκ°„μ„ μΈ‘μ •ν•˜λ©° 150ms~200ms μ΄ν•˜ μœ μ§€κ°€ λͺ©ν‘œμ΄λ‹€ [1, 2, 4, 5, 16]. 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜λŠ” 무거운 JavaScript 싀행을 λ°©μ§€ν•˜κΈ° μœ„ν•΄, μž‘μ—…μ„ 50ms μ΄ν•˜μ˜ 청크둜 λΆ„ν• ν•˜κ±°λ‚˜ Web Workersλ₯Ό 톡해 연산을 λΆ„λ¦¬ν•˜κ³  λΆˆν•„μš”ν•œ μ„œλ“œνŒŒν‹° 슀크립트λ₯Ό μ§€μ—°(defer)μ‹œμΌœμ•Ό ν•œλ‹€ [16-20]. * **CLS (Cumulative Layout Shift):** νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ˜λŠ” λ™μ•ˆ λ°œμƒν•˜λŠ” 예기치 μ•Šμ€ λ ˆμ΄μ•„μ›ƒ 이동을 μΈ‘μ •ν•˜λ©°, μ‹œκ°μ  μ•ˆμ •μ„±μ„ μœ„ν•΄ 0.08μ—μ„œ 0.1 미만으둜 μœ μ§€ν•΄μ•Ό ν•œλ‹€ [2, 5, 11, 12]. 이λ₯Ό λ°©μ§€ν•˜λ €λ©΄ 이미지 및 λΉ„λ””μ˜€μ— λͺ…μ‹œμ μΈ `width`와 `height` 속성을 μ§€μ •ν•˜κ³ , 동적 κ΄‘κ³ λ‚˜ μ½˜ν…μΈ κ°€ λ“€μ–΄κ°ˆ 곡간을 미리 확보해야 ν•˜λ©°, 폰트 λ‘œλ“œ μ‹œ `font-display: swap` λ˜λŠ” `optional`을 μ§€μ •ν•΄μ•Ό ν•œλ‹€ [12, 21-23]. * **μ½”λ“œ λΆ„ν• (Code Splitting) 및 μ§€μ—° λ‘œλ”©(Lazy Loading):** * 초기 λ‘œλ”© μ‹œ 전체 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό ν•œ λ²ˆμ— λ‹€μš΄λ‘œλ“œν•˜λŠ” 큰 λ²ˆλ“€ μ‚¬μ΄μ¦ˆ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, μ½”λ“œλ₯Ό 더 μž‘μ€ 청크(chunk)둜 λ‚˜λˆ„μ–΄ ν•„μš”ν•  λ•Œλ§Œ λ‘œλ“œν•˜λŠ” 방식이닀 [6]. * React ν™˜κ²½μ—μ„œλŠ” `React.lazy`와 `Suspense`λ₯Ό κ²°ν•©ν•˜κ±°λ‚˜ 라우트 기반 λΆ„ν• (Route-Based Splitting)을 톡해 νŠΉμ • λΌμš°νŠΈλ‚˜ 무거운 μ»΄ν¬λ„ŒνŠΈ(예: 차트, 에디터 λ“±)μ—λ§Œ μ§€μ—° λ‘œλ”©μ„ μ μš©ν•œλ‹€ [24-28]. * μ΄λŠ” 초기 λ²ˆλ“€ 크기λ₯Ό 50~100KB μˆ˜μ€€μœΌλ‘œ 쀄여 TTFB와 TTI(Time to Interactive)λ₯Ό 획기적으둜 ν–₯μƒμ‹œν‚¨λ‹€ [29, 30]. 단, ν™”λ©΄ 상단(Above-the-fold)의 μ€‘μš”ν•œ μ½˜ν…μΈ λ‚˜ μ˜μ›… 이미지(Hero image)λ₯Ό μ§€μ—° λ‘œλ”©ν•  경우 였히렀 LCPκ°€ 악화될 수 μžˆμœΌλ―€λ‘œ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€ [31]. * **λ Œλ”λ§ μ•„ν‚€ν…μ²˜ (Rendering Architecture):** * μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ λΈŒλΌμš°μ €μ—μ„œ 화면을 μ „λΆ€ κ΅¬μ„±ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)은 빈 HTML μŠ€μΌˆλ ˆν†€μ„ λ¨Όμ € μ œκ³΅ν•˜λ―€λ‘œ 검색 μ—”μ§„ 크둀링과 μ„±λŠ₯ μ§€ν‘œ(FCP)에 μ•…μ˜ν–₯을 λ―ΈμΉœλ‹€ [32, 33]. * λŒ€μ‹  μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)μ΄λ‚˜ 정적 μ‚¬μ΄νŠΈ 생성(SSG), 점진적 정적 μž¬μƒμ„±(ISR)을 μ‚¬μš©ν•˜μ—¬ 미리 λ Œλ”λ§λœ μ™„λ²½ν•œ HTML을 λΈŒλΌμš°μ €λ‚˜ ν¬λ‘€λŸ¬μ— μ „λ‹¬ν•˜λ©΄ λ‘œλ”© 속도와 SEO 문제λ₯Ό λ™μ‹œμ— ν•΄κ²°ν•  수 μžˆλ‹€ [34-36]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Core Web Vitals]], [[Code Splitting]], [[Server-Side Rendering (SSR)]], [[Lazy Loading]], [[React Router]] - **Projects/Contexts:** [[ν™ˆνŽ˜μ΄μ§€ ꡬ쑰 & UX modern website architecture best practices landing page UX patterns examples homepage layout structure case study react router best practices seo basics for react websites web performance optimization frontend checklist core web vitals optimization guide]] - **Contradictions/Notes:** - μ½”μ–΄ μ›Ή λ°”μ΄νƒˆμ˜ 엄격성에 λŒ€ν•œ 차이: μ†ŒμŠ€ [5]λŠ” 2025λ…„ κΈ°μ€€ LCPλ₯Ό 2.0초 미만, CLSλ₯Ό 0.08 미만으둜 λ”μš± 엄격해진 μž„κ³„κ°’μ„ μ œμ‹œν•˜μ§€λ§Œ, μ†ŒμŠ€ [2] 및 [10] λ“±μ—μ„œλŠ” μ—¬μ „νžˆ LCP 2.5초 μ΄ν•˜, CLS 0.1 μ΄ν•˜λ₯Ό μ–‘ν˜Έν•œ(Good) κΈ°μ€€μœΌλ‘œ λͺ…μ‹œν•˜κ³  μžˆμ–΄ μ†ŒμŠ€ κ°„ κΈ°μ€€ μž„κ³„κ°’μ— μ•½κ°„μ˜ νŽΈμ°¨κ°€ μ‘΄μž¬ν•œλ‹€. - 동적 λ Œλ”λ§(Dynamic Rendering)에 λŒ€ν•œ 평가: μ†ŒμŠ€ [34]은 동적 λ Œλ”λ§μ„ 봇 νŠΈλž˜ν”½ 해결을 μœ„ν•œ μ°¨μ„ μ±…('Good' SEO Impact)으둜 μ†Œκ°œν•˜μ§€λ§Œ, μ†ŒμŠ€ [37]λŠ” 2026λ…„ κΈ°μ€€ μ΄λŠ” μ‚¬μš©μž λŒ€μƒκ³Ό 봇 λŒ€μƒμ„ λ‹€λ₯΄κ²Œ λ³΄μ—¬μ£ΌλŠ” ν΄λ‘œν‚Ή(Cloaking)으둜 간주될 수 μžˆμ–΄ ꡬ글이 λͺ…μ‹œμ μœΌλ‘œ μ‚¬μš© 쀑단(Deprecated)을 ꢌμž₯ν•˜λŠ” 기법이라고 κ²½κ³ ν•œλ‹€. --- *Last updated: 2026-04-26*