Web Vitals - ChoDragon9/posts GitHub Wiki
Web Vitalsμ μ’μ UXλ₯Ό μ 곡νκΈ° μν΄ Googleμμ μ μνλ μ±λ₯ νμ§ μ§μΉ¨μ΄λ€. Googleμμ μ 곡ν λꡬμ μΈ‘μ νλͺ©μ μλ ¨λμ λ°λΌμ UX νμ§μ νμ νκΈ° νλ€λ€λ μ¬μ€μ λ°κ²¬νλ€. κ·Έλμ Web Vitalsμ νκ²½μ λ¨μνν΄μ νμ§ κ°μ μ λμμ΄ λλ κ²μ μ΄μ μ λ§μ·λ€.
λ‘λ© μκ°, μνΈμμ© μκ°, μκ°μ λ³νλ νλͺ©μ λν μ’μ/λμ¨μ νλ¨ν μ μλ μ«μ λ²μλ₯Ό κ°μ΄λνλ€. μ±λ₯ μΈ‘μ νλͺ© μ€ μ£Όμ μ§νλ Core Web Vitalsλ‘ κ΅¬λΆνλ€.
λ‘λ© μκ° μΈ‘μ νλͺ©
Time to First Byte (TTFB)
- λΈλΌμ°μ κ° νμ΄μ§ μ½ν μΈ μ 첫 λ²μ§Έ λ°μ΄νΈλ₯Ό μμ νλ λ° κ±Έλ¦¬λ μκ°μ μλ―Ένλ€.
- 600ms μ΄μ 걸리면 λμ¨μ μλ―Ένλ€.
κ°μ λ°©λ²
- μλ²μ μμ© νλ‘κ·Έλ¨ μ΅μ ν
- λ°μ΄ν°λ² μ΄μ€λ₯Ό 쿼리νλ λ°©λ² μ΅μ ν
- λ λ§μ λ©λͺ¨λ¦¬ λλ CPUλ₯Ό κ°μ§λλ‘ μλ² νλμ¨μ΄ μ κ·Έλ μ΄λ
First Contentful Paint (FCP)
- νμ΄μ§ λ‘λκ° μμλ ν νμ΄μ§ μ½ν μΈ μ μΌλΆκ° νλ©΄μ λ λλ§ λ λκΉμ§μ μκ°μ μΈ‘μ νλ€.
- μ½ν μΈ λ ν μ€νΈ, μ΄λ―Έμ§(λ°°κ²½ μ΄λ―Έμ§ ν¬ν¨), svg μμ λλ ν°μμ΄ μλ canvas μμλ₯Ό μλ―Ένλ€.
κ°μ λ°©λ²
- λ‘λ
- μμ² μλ₯Ό μ€μ΄κ³ μ μ‘ ν¬κΈ°λ₯Ό μκ² μ μ§
- νμν μ€λ¦¬μ§μ μ¬μ μ°κ²°
- μλ² μλ΅ μκ°(TTFB) κ°μ
- μ¬λ¬ νμ΄μ§ 리λ€μ΄λ μ λ°©μ§
- μμ² ν리λ‘λ
- ν° νμ΄λ‘λ λ°©μ§
- ν¨μ¨μ μΈ μΊμ μ μ± μΌλ‘ μ μ μμ μ 곡
- CSS μ©λ μ΅μ ν
- μ¬μ©νμ§ μλ CSS μ κ±°
- μ€μν μμ² κΉμ΄ μ΅μν
- μΉ ν°νΈ λ‘λ μ€μ ν μ€νΈκ° κ³μ 보μ΄λμ§ νμΈ
- λ λλ§ μ°¨λ¨ λ¦¬μμ€ μ κ±°
- κ³Όλν DOM ν¬κΈ° νΌνκΈ°
- λ€νΈμν¬ ν¨μ¨μ±μ΄ λ¨μ΄μ§
- λ°νμμ λ λλ§ μλ μ ν
- μ¬μ©μ κΈ°κΈ°μ λ©λͺ¨λ¦¬ μ±λ₯ μν₯
Largest Contentful Paint (LCP)
- νμ΄μ§κ° μ²μ λ‘λλ₯Ό μμν μμ μ κΈ°μ€μΌλ‘ λ·°ν¬νΈ λ΄μ νμλλ κ°μ₯ ν° μ΄λ―Έμ§ λλ ν μ€νΈ λΈλ‘μ λ λλ§ μκ°μ μΈ‘μ νλ€.
- img, imageλ΄μ svg, video, url() λ°°κ²½, ν μ€νΈλ₯Ό κ³ λ €νλ€.
- μ΄λ―Έμ§λ 보μ΄λ ν¬κΈ°μ κ³ μ ν¬κΈ° μ€ λ μμ ν¬κΈ°λ₯Ό κ³ λ €νλ€.
- ν μ€νΈ μμμ κ²½μ° ν΄λΉ ν μ€νΈ λ Έλμ ν¬κΈ°λ§ κ³ λ €λλ€.
κ°μ λ°©λ²
- λλ¦° μλ² μλ΅ μκ°μ μ΅μ ν
- JavaScriptμ CSS κ°μ λ λλ§ μ°¨λ¨ μμ² μ΅μ ν
- CSS μ΅μ ν
- JavaScript μ΅μ ν
- 리μμ€ λ‘λ© μκ° μ΅μ ν
- μΉ ν°νΈ μ΅μ ν
- μ΄λ―Έμ§ μ΅μ ν
- PRPL ν¨ν΄
- Push(Preload), Render, Pre-cache, Lazy load
- ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§ μ΅μ ν
- CRP μ΅μ ν
μνΈμμ© μκ° μΈ‘μ νλͺ©
Total Blocking Time (TBT)
- FCPμ TTI μ¬μ΄μ μ΄ μκ°μ μΈ‘μ νλ€.
- λ©μΈ μ€λ λλ 50ms μ΄μ μ€νλλ μμ μΈ Long Taskκ° μμ λ μ°¨λ¨ λ κ²μΌλ‘ κ°μ£Όνλ€.
- FCPμ TTI μ¬μ΄μ λ°μνλ κ° Long Taskμ μ°¨λ¨ μκ°μ ν©κ³κ° TBTλ€.
- μλ₯Ό λ€μ΄ Long Task 250ms, 90msκ° μλ€λ©΄ κ°κ° 50msλ₯Ό μ μΈν 240msκ° TBTλ€.
κ°μ λ°©λ²
- third-party μ½λ μν₯ κ°μ
- JavaScript μ€ν κ°μ
- λ©μΈ μ°λ λ μ€ν μ΅μν
- μ μ μμ² μμ μμ μλ΅ μ¬μ΄μ¦
Time to Interactive (TTI)
- νμ΄μ§κ° λ‘λ λκΈ° μμν μμ λΆν° κΈ°λ³Έ νμ 리μμ€κ° λ‘λ λ μμ κΉμ§μ μκ°μ μΈ‘μ νλ©° μ¬μ©μ μ λ ₯μ΄ κ°λ₯ν μμ μ μΈ‘μ νλ€.
- FCPκ° μμλκ³ , 5μ΄ λμ λ©μΈ μ€λ λλ₯Ό μ°¨λ¨νμ§ μλ μκΈ°λ₯Ό μ°Ύλλ€. κ·Έ μκΈ°μμ κ³Όκ±°λ‘ κ²μνλ©° Long Taskμ μ’ λ£ μμ μ μ°Ύλ λ€. κ·Έ μμ μ΄ TTI μλ£ μμ μ΄λ€.
κ°μ λ°©λ²
- JavaScript μ΅μν
- νμν μ€λ¦¬μ§μ μ¬μ μ°κ²°
- μμ² preload
- μ£Όμ μμ² κΉμ΄ μ΅μν
- TBTμ κ°μ
- third-party μ½λ μν₯ κ°μ
- JavaScript μ€ν κ°μ
- λ©μΈ μ°λ λ μ€ν μ΅μν
- μ μ μμ² μμ μμ μλ΅ μ¬μ΄μ¦
First Input Delay (FID)
- μ¬μ©μκ° νμ΄μ§μ μ²μ μΈν°λ μ ν μκ°λΆν° μ΄λ²€νΈ νΈλ€λ¬ μ²λ¦¬λ₯Ό μμν μ μλ μκ°κΉμ§μ μκ°μ μΈ‘μ νλ€.
κ°μ λ°©λ²
- TBTμ κ°μ
- third-party μ½λ μν₯ κ°μ
- JavaScript μ€ν κ°μ
- λ©μΈ μ°λ λ μ€ν μ΅μν
- μ μ μμ² μμ μμ μλ΅ μ¬μ΄μ¦
λ©μΈ μ°λ λ μ€ν μ΅μν
μ€ν¬λ¦½νΈ νκ°
- third-party JavaScript μ΅μ ν
- μ λ ₯ νΈλ€λ¬ λλ°μ΄μ€
- μΉ μ컀 μ¬μ©
μ€νμΌ λ° λ μ΄μμ
- μ€νμΌ κ³μ°μ λ²μμ 볡μ‘μ± κ°μ
- ν¬κ³ 볡μ‘ν λ μ΄μμ λ° λ μ΄μμ μ€λμ± λ°©μ§
λ λλ§
- μ»΄ν¬μ§ν° μ μ© μμ±μ μ¬μ© λ° λ μ΄μ΄ μ κ΄λ¦¬
- νμ΄μ§ 볡μ‘μ±μ λ¨μννκ³ νμΈνΈ μμμ μ€μΈλ€.
μκ°μ λ³νλ μΈ‘μ νλͺ©
Cumulative Layout Shift (CLS)
- νμ΄μ§μμ λ°μνλ λͺ¨λ μκΈ°μΉ μλ λ μ΄μμ μ΄λμ λν λͺ¨λ κ°λ³ λ μ΄μμ μ΄λ μ μμ ν©κ³λ₯Ό μΈ‘μ νλ€.
CLS = μ΄λ 거리 λΉμ¨ x μ΄λν μμ λΉμ¨
κ°μ λ°©λ²
- νμ μ΄λ―Έμ§ λ° λμμ μμμ ν¬κΈ° μμ±μ ν¬ν¨
- CSS κ°λ‘, μΈλ‘ λΉμ¨ μμμ κ°μ νλͺ©μΌλ‘ νμν 곡κ°μ μ‘λλ€.
- μ¬μ©μ μνΈ μμ©μ λν μλ΅μ μ μΈνκ³ λ κΈ°μ‘΄ 컨ν μΈ μμ 컨ν μΈ λ₯Ό μ½μ νμ§ μλλ€. μ΄λ κ²νλ©΄ λ μ΄μμ μ΄λμ΄ μμλλ€.
- λ μ΄μμ λ³κ²½μ νΈλ¦¬κ±°νλ μμ±μ μ λλ©μ΄μ λ³΄λ€ transform μ λλ©μ΄μ μΌλ‘ μ μ©νλ€.
Core Web Vitals
μ±λ₯ μΈ‘μ νλͺ© μ€ μ£Όμ μ§νμΈ LCP, FID, CLSλ₯Ό μλ―Ένλ€.
LCPμ μ’μ/λμ¨ νλ¨ κ΅¬κ°
- μ’μ: 2500ms λ―Έλ§
- λμ¨: 4000ms μ΄κ³Ό
FIDμ μ’μ/λμ¨ νλ¨ κ΅¬κ°
- μ’μ: 100ms λ―Έλ§
- λμ¨: 300ms μ΄κ³Ό
CLSμ μ’μ/λμ¨ νλ¨ κ΅¬κ°
- μ’μ: 0.1 λ―Έλ§
- λμ¨: 0.25 μ΄κ³Ό