# [[Image Optimization]] ## πŸ“Œ Brief Summary 이미지 μ΅œμ ν™”(Image Optimization)λŠ” μ‹œκ°μ  ν’ˆμ§ˆμ˜ μ €ν•˜ 없이 μ΄λ―Έμ§€μ˜ 파일 크기λ₯Ό 쀄이고 μ›ΉνŽ˜μ΄μ§€ λ‘œλ”© 속도λ₯Ό ν–₯μƒμ‹œν‚€λŠ” 핡심 μ›Ή μ„±λŠ₯ μ΅œμ ν™” μ „λž΅μž…λ‹ˆλ‹€ [1, 2]. 2025λ…„ ν˜„λŒ€ μ›Ή μ•„ν‚€ν…μ²˜μ—μ„œ μ΄λŠ” μ½”μ–΄ μ›Ή λ°”μ΄νƒˆ(Core Web Vitals)의 μ£Όμš” μ§€ν‘œμΈ LCP(Largest Contentful Paint)와 CLS(Cumulative Layout Shift)λ₯Ό κ°œμ„ ν•˜λŠ” 데 직접적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [3, 4]. μ°¨μ„ΈλŒ€ 포맷 채택, λ°˜μ‘ν˜• 크기 μ‘°μ •, μ „λž΅μ μΈ μ§€μ—° λ‘œλ”©(Lazy Loading), 접근성을 μœ„ν•œ λŒ€μ²΄ ν…μŠ€νŠΈ 제곡 등을 ν¬κ΄„ν•©λ‹ˆλ‹€ [5-7]. ## πŸ“– Core Content * **μ°¨μ„ΈλŒ€ 포맷 채택 및 μ••μΆ•:** 무거운 PNGλ‚˜ JPEG λŒ€μ‹  WebP 및 AVIF와 같은 μ°¨μ„ΈλŒ€ 이미지 포맷을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [7-10]. WebPλŠ” JPEG보닀 μ•½ 30%, AVIFλŠ” 50% 더 μž‘μ€ 파일 크기λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [2]. TinyPNG, Squoosh, ImageOptim, Sharp와 같은 μ΅œμ ν™” 도ꡬλ₯Ό ν™œμš©ν•˜μ—¬ ν™”μ§ˆ 손싀 없이 파일(SVG 포함)을 μ••μΆ•ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€ [1, 2, 9]. 사진 λŒ€μ‹  μΌλŸ¬μŠ€νŠΈλ ˆμ΄μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것도 파일 크기λ₯Ό μ€„μ΄λŠ” 효과적인 λŒ€μ•ˆμ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€ [11]. * **LCP μ΅œμ ν™” 및 νžˆμ–΄λ‘œ 이미지 처리:** μš©λŸ‰μ΄ 크고 μ΅œμ ν™”λ˜μ§€ μ•Šμ€ μ΄λ―Έμ§€λŠ” LCP μ„±λŠ₯ μ €ν•˜μ˜ 주된 μ›μΈμž…λ‹ˆλ‹€ [12, 13]. 초기 ν™”λ©΄(Above-the-fold)에 λ‚˜νƒ€λ‚˜λŠ” κ°€μž₯ μ€‘μš”ν•œ νžˆμ–΄λ‘œ μ΄λ―Έμ§€μ—λŠ” μ§€μ—° λ‘œλ”©(Lazy loading)을 μ μš©ν•˜λ©΄ μ„±λŠ₯이 μ•…ν™”λ˜λ―€λ‘œ ν”Όν•΄μ•Ό ν•©λ‹ˆλ‹€ [14]. λŒ€μ‹  `loading="eager"` 속성을 μ‚¬μš©ν•˜κ±°λ‚˜ `fetchpriority="high"`λ₯Ό 톡해 λΈŒλΌμš°μ €κ°€ LCP 이미지λ₯Ό μš°μ„ μ μœΌλ‘œ λ‘œλ“œ(Preload)ν•˜λ„λ‘ μ§€μ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€ [2, 10, 15]. * **μ§€μ—° λ‘œλ”©(Lazy Loading) 적용:** μ‚¬μš©μžκ°€ μŠ€ν¬λ‘€ν•΄μ•Ό λ³Ό 수 μžˆλŠ” ν™”λ©΄ μ•„λž˜(Below-the-fold)의 비핡심 이미지에 λŒ€ν•΄μ„œλŠ” μ§€μ—° λ‘œλ”©μ„ κ΅¬ν˜„ν•˜μ—¬ 초기 νŽ˜μ΄μ§€ λ‘œλ”© 속도λ₯Ό 높이고 λΆˆν•„μš”ν•œ λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­ μ†ŒλΉ„λ₯Ό 쀄여야 ν•©λ‹ˆλ‹€ [4, 5, 7, 10]. * **λ ˆμ΄μ•„μ›ƒ μ•ˆμ •μ„±(CLS) 확보:** 이미지가 λ‘œλ“œλ˜λŠ” λ™μ•ˆ λ°œμƒν•˜λŠ” 예기치 μ•Šμ€ λ ˆμ΄μ•„μ›ƒ μ „ν™˜(Layout Shift)을 λ°©μ§€ν•˜λ €λ©΄, HTML λ˜λŠ” CSS에 μ΄λ―Έμ§€μ˜ λͺ…μ‹œμ μΈ λ„ˆλΉ„(width)와 높이(height) μ†μ„±μ΄λ‚˜ μ’…νš‘λΉ„(aspect-ratio)λ₯Ό 항상 μ„€μ •ν•˜μ—¬ λΈŒλΌμš°μ €κ°€ 미리 곡간을 확보할 수 있게 ν•΄μ•Ό ν•©λ‹ˆλ‹€ [16-18]. * **λ°˜μ‘ν˜• 크기 μ‘°μ •:** λͺ¨λ°”일 μš°μ„ (Mobile-First) λ””μžμΈ 원칙에 따라, κΈ°κΈ° 해상도와 ν™”λ©΄ 크기에 맞좰 μ μ ˆν•œ 이미지λ₯Ό μ œκ³΅ν•  수 μžˆλ„λ‘ `` μš”μ†Œμ™€ `srcset` 속성을 ν™œμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [5, 7, 10, 19]. 300ν”½μ…€ μ»¨ν…Œμ΄λ„ˆμ— 4K 해상도 이미지λ₯Ό λ‘œλ“œν•˜λŠ” 것과 같은 λ¦¬μ†ŒμŠ€ λ‚­λΉ„λ₯Ό ν”Όν•΄μ•Ό ν•©λ‹ˆλ‹€ [9]. * **μ›Ή μ ‘κ·Όμ„±(WCAG) μ€€μˆ˜:** μ‹œκ° μž₯μ• κ°€ μžˆλŠ” μ‚¬μš©μžλ‚˜ 슀크린 리더 μ‚¬μš©μžλ₯Ό μœ„ν•΄ 의미 μžˆλŠ” λͺ¨λ“  μ΄λ―Έμ§€μ—λŠ” μ‹œκ°μ  μ½˜ν…μΈ λ₯Ό λͺ…ν™•νžˆ μ„€λͺ…ν•˜λŠ” λŒ€μ²΄ ν…μŠ€νŠΈ(Alt text)λ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€ [6, 20, 21]. ## πŸ”— Knowledge Connections - **Related Topics:** `[[Core Web Vitals]]`, `[[Largest Contentful Paint (LCP)]]`, `[[Cumulative Layout Shift (CLS)]]`, `[[Lazy Loading]]`, `[[Web Accessibility (WCAG)]]` - **Projects/Contexts:** `[[E-commerce Migration to Next.js]]` (Next.js의 Image μ»΄ν¬λ„ŒνŠΈμ™€ WebPλ₯Ό ν™œμš©ν•΄ 1만 개 μ œν’ˆ μ΄λ―Έμ§€μ˜ λ‘œλ”©κ³Ό μ½”μ–΄ μ›Ή λ°”μ΄νƒˆμ„ μ„±κ³΅μ μœΌλ‘œ κ°œμ„ ν•œ 사둀 [22]), `[[Performance Budgets]]` (μ„±λŠ₯ μ˜ˆμ‚° μ„€μ • μ‹œ λͺ¨λ°”일 기기의 이미지 크기 ν•œλ„λ₯Ό 500KB λ“±μœΌλ‘œ μ œν•œν•˜λŠ” λ§₯락 [23]) - **Contradictions/Notes:** μ†ŒμŠ€ μ „λ°˜μ— 걸쳐 일반적인 이미지 μžμ‚°μ—λŠ” λ‘œλ”© 속도λ₯Ό μœ„ν•΄ μ§€μ—° λ‘œλ”©(Lazy Loading)이 ν•„μˆ˜μ μ΄λΌκ³  ꢌμž₯ν•˜μ§€λ§Œ, 초기 λ·°ν¬νŠΈμ— μœ„μΉ˜ν•œ μ€‘μš”ν•œ LCP 이미지에 μ§€μ—° λ‘œλ”©μ„ μ μš©ν•˜λŠ” 것은 LCP 점수λ₯Ό μ‹¬κ°ν•˜κ²Œ ν›Όμ†ν•˜λŠ” 'κ°€μž₯ ν”ν•œ μ‹€μˆ˜'μ΄λ―€λ‘œ λ°˜λ“œμ‹œ μ¦‰μ‹œ λ‘œλ“œ(Eager load)ν•΄μ•Ό ν•œλ‹€κ³  주의λ₯Ό μ€λ‹ˆλ‹€ [10, 14]. --- *Last updated: 2026-04-26*