ν¨κ³Όμ μΈ SEO κ°μ μ μν μΉνμ΄μ§ λ‘λ© μλ μ΅μ ν λ°©λ²
μΉ νμ΄μ§ λ‘λ© κ³Όμ μ κ²μ μ΅μ ν(SEO)μ ν΅μ¬ μμμ λλ€. μ΄ κΈμ DNS μ‘°νλΆν° DOM μμ±, λ λλ§ νΈλ¦¬λ₯Ό κ±°μ³ μ΅μ’ μ μΌλ‘ νλ©΄μ νμλλ μΉνμ΄μ§ λ‘λ© λ¨κ³, κ° λ¨κ³μμ μΉ μ±λ₯μ μ΅μ ννκΈ° μν΄ μ΄μμκ° μ μ©ν μ μλ ꡬ체μ μΈ λ°©λ²(dns-prefetch, preconnect, CSS λ° JavaScript μ΅μ ν)μ μ 곡ν©λλ€. μ΄λ Core Web Vitals(LCP, INP, CLS) μ§ν κ°μ μ νμμ μΈ μ 보μ λλ€.
κ²μ μ΅μ ν ν₯μμ μν μΉ νμ΄μ§ λ‘λ© λ¨κ³ λΆμ λ° λ³λͺ© νμ
μΉ νμ΄μ§ λ‘λ© κ³Όμ μ κ²μ μ΅μ νμ μ€μν μμ μ€ νλμ λλ€. μΉ νμ΄μ§ λ‘λ©μ DNS μ‘°νλ‘ IP μ£Όμλ₯Ό μ»κ³ , TCPλ₯Ό ν΅ν΄ μλ²μ μ°κ²°μ νκ²λ©λλ€. HTTP μμ²μ ν΅ν΄ μλ²μμ HTMLκ³Ό CSSλ₯Ό λ°μ DOM λ° λ λλ§ νΈλ¦¬λ₯Ό μμ±ν©λλ€. μμ±λ νΈλ¦¬μ CSSλ‘ μ€νμΌμ μ μ©νκ³ JavaScriptλ₯Ό μ€ννμ¬ λμ μ½ν μΈ λ₯Ό μΆκ°ν©λλ€. μ΄ν λ μ΄μμμ κ³μ°νκ³ , νμΈν λ° μ»΄ν¬μ§ν μ ν΅ν΄ μ΅μ’ μ μΌλ‘ νλ©΄μ νμ΄μ§λ₯Ό νμνκ² λ©λλ€.
κ²μμμ§ μ΅μ ν μμ μ μν΄μλ μΉ νμ΄μ§κ° μ΄λ€ λ°©μμΌλ‘ λ‘λ©μ΄ λλμ§ μΉνμ΄μ§ λ‘λ© λ¨κ³μ κΈ°λ³Έμ μΈ μ΄ν΄κ° μμΌλ©΄ μμ νκΈ°κ° μμν΄μ§λλ€. κ° λ¨κ³λ³λ‘ μ΄μμκ° μ΅μ ν μμ μμ μ§νν μ μλ λΆλΆκ³Ό ν μ μλ λΆλΆμ μκ³ ν μ μλ λΆλΆμ λν μμ μ μ§νν΄μΌ νλ©° μΉνμ΄μ§ λ‘λ© μ κ·Έ μμ μ κ° λ¨κ³μ μΌλΆλΆμ νμ λ μ μμ΅λλ€.
κ²μμμ§ μ΅μ ν ν λ€λ₯Έ μμλ‘ μΈν΄ λ°μνλ λ¬Έμ λ μ°¨ν μ κ² ν νμ ν΄μΌ νλ©° κ·Έ λΆλΆμ΄ μΉνμ΄μ§μ μ΄λ€ κ³Όμ μμ λ°μνλμ§λ λλ΅μ μΌλ‘ νμ ν νμμ±μ΄ μμ΄ μλλ μΉνμ΄μ§ λ‘λ©μ λ¨κ³λ³ μ€λͺ μ κ°λ¨νκ² μμ½ μ 리νμ΅λλ€.
μΉνμ΄μ§ λ‘λ© μμμ Core Web Vitals μ΅μ ν
1. DNS μ‘°ν (DNS Lookup) λ° λ¦¬μμ€ μ¬μ μ°κ²° (TTFB κ°μ )
DNS μ‘°νλ μ¬μ©μκ° μΉμ¬μ΄νΈ μ£Όμλ₯Ό μ λ ₯νλ©΄ λΈλΌμ°μ λ λλ©μΈ μ΄λ¦μ IP μ£Όμλ‘ λ³ννλ κ³Όμ μ λλ€. μΌλ°μ μΌλ‘ μ¬λλ€μ΄ μ¬μ©νκΈ° νΈλ¦¬ν μ¬μ΄νΈ μ΄λ¦μ μ»΄ν¨ν°κ° μ΄ν΄ν μ μλ μ«μλ‘ λ³κ²½ν΄μ£Όλ μμ μ λλ€. DNS(Domain Name System)λ‘ μλ²μ μμ²μ 보λ΄λ©΄ DNS μλ²λ λλ©μΈ μ΄λ¦μ ν΄λΉνλ IP μ£Όμλ₯Ό λ°νν©λλ€. μ΄λ μΊμλ₯Ό μ΄μ©ν΄μ μΊμ μ λ³΄κ° λΈλΌμ°μ μ μ‘΄μ¬νλ©΄ DNS μ‘°ν κ³Όμ μ μλ΅ν μ μμ΅λλ€.
νμ΄μ§μμ μΈλΆμ μ¬λ¬ κ°μ λ€λ₯Έ μ¬μ΄νΈ μ 보λ₯Ό κ°μ Έμ¬ λ μ΄ κ³Όμ μμ λ‘λ© μ λΆνκ° κ±Έλ¦΄ μ μκΈ° λλ¬Έμ νμ΄μ§μ λ§μ΄ μ¬μ©νλ μ 보λ₯Ό κ°μ Έμ€λ μ¬μ΄νΈμ λν΄μ 미리 μ°κ²°ν μ€λΉλ₯Ό ν΄μ£Όλ©΄ μ’ λ λΉ λ₯΄κ² μΈλΆ 리μμ€λ₯Ό λ‘λ©μν¬ μ μμ΅λλ€.
dns-prefetchλ λΈλΌμ°μ κ° λλ©μΈ μ΄λ¦μ 미리 DNS μ‘°ννμ¬ IP μ£Όμλ₯Ό μΊμνλλ‘ μ€μ ν©λλ€.
preconnectλ λΈλΌμ°μ κ° μΈλΆ λλ©μΈμ λν μ°κ²°μ 미리 μ€μ νλλ‘ μ§μν©λλ€.
β μμ (μΈλΆ 리μμ€ μ¬μ μ°κ²°μ ν΅ν μ΅μ ν)
link rel="preconnect" href="https://fonts.googleapis.com"
link rel="dns-prefetch" href="https://fonts.gstatic.com"
μ΄ κΈ°λ²μ TTFB(Time To First Byte)λ₯Ό μ€μ¬ LCP(Largest Contentful Paint) μκ°μ κ°μ νλ λ° ν¨κ³Όμ μ΄λ©°, νΉν κ΅¬κΈ ν°νΈλ μΈλΆ CDN λ± λ‘λ©μ΄ νμν 리μμ€μ μ¬μ©λ©λλ€.
2. μλ²μ μ°κ²° (TCP Handshake) λ° 3. HTTP μμ² / 4. μλ² μλ΅
λΈλΌμ°μ λ DNS μ‘°νλ₯Ό ν΅ν΄ μ»μ IP μ£Όμλ₯Ό μ¬μ©νμ¬ μΉ μλ²μ TCP μ°κ²°μ μ€μ ν©λλ€. μ΄λ λ°μ΄ν°μ μ μ‘ μλ, ν¨ν·μ μμ€μ΄λ μ€λ₯ λ°μ‘ λ±μ μ μ΄λ₯Ό νκ² λ©λλ€. μ°κ²° ν HTTP μμ²μ μλ²μ 보λ΄κ³ , μλ²λ μμ²μ μ²λ¦¬νκ³ HTML μ½λ, μν μ½λ, ν€λ μ 보 λ±μ ν¬ν¨ν μλ΅μ 보λ λλ€. μ΄ μ΄κΈ° μ°κ²° λ° μλ΅ λ¨κ³λ TTFBμ μ§μ μ μΈ μν₯μ λ―ΈμΉλ©°, TTFBκ° λΉ λ₯Όμλ‘ μ 체 λ‘λ© μ±λ₯μ΄ ν₯μλ©λλ€. μλ² μΈ‘ μ΅μ ν(CDN, μΊμ±, μλ² μλ΅ μκ° λ¨μΆ)κ° νμμ μ λλ€.
5. HTML νμ± λ° DOM νΈλ¦¬ μμ± (DOM)
λΈλΌμ°μ λ HTML μ½λλ₯Ό μ½κ³ λΆμνμ¬ DOM(Document Object Model) νΈλ¦¬λ₯Ό μμ±ν©λλ€. DOM νΈλ¦¬λ HTML λ¬Έμμ ꡬ쑰λ₯Ό νννλ©°, μ΄ κ³Όμ μμ μΈλΆ 리μμ€(CSS, JavaScript)λ₯Ό λ°κ²¬νλ©΄ λ‘λλ₯Ό μμ²ν©λλ€. μ΄ νμ± κ³Όμ μμ λ λλ§ μ°¨λ¨ λ¦¬μμ€(Render Blocking Resource)κ° λ°κ²¬λλ©΄ νμ±μ΄ μΌμ μ€λ¨λ μ μμ΅λλ€.
6. CSS μ²λ¦¬ λ° CSSOM μμ±
κ΅¬μ‘°κ° νμ±λλ©΄ CSS νμΌμ μ½μ΄ λ€μ¬μ HTML λ¬Έμμ μ€νμΌμ μ μνκ² λ©λλ€. λΈλΌμ°μ λ CSSλ₯Ό νμ±νμ¬ CSSOM(CSS Object Model) νΈλ¦¬λ₯Ό μμ±ν©λλ€. CSSλ λ λλ§ μ°¨λ¨ λ¦¬μμ€(Rendering Blocking Resource)μ΄λ―λ‘, μμ ν΅μ¬ CSSλ HTML νμΌ λ΄μ μΈλΌμΈμΌλ‘ μ½μ νκ³ (Critical CSS), λλ¨Έμ§ CSSλ λΉλκΈ° λ‘λ©μ μ μ©νμ¬ FCP(First Contentful Paint)λ₯Ό κ°μ ν΄μΌ ν©λλ€.
7. JavaScript μ€ν λ° μνΈμμ©μ± μ΅μ ν
λΈλΌμ°μ λ HTML λ¬Έμμ ν¬ν¨λ JavaScriptλ₯Ό νμ±νκ³ μ€νν©λλ€. JavaScriptλ DOMκ³Ό CSSOMμ μμ ν μ μμΌλ©°, μ΄λ‘ μΈν΄ νμ΄μ§μ λ΄μ©μ΄λ μ€νμΌμ΄ λμ μΌλ‘ λ³κ²½λ μ μμ΅λλ€. JavaScript μ€νμ λ©μΈ μ€λ λλ₯Ό μ°¨μ§νμ¬ μ¬μ©μ μ
λ ₯μ λν νμ΄μ§μ λ°μμ μ§μ°μν¬ μ μμ΅λλ€. μ΄λ INP(Interaction to Next Paint)μ TBT(Total Blocking Time)μ μ§μ μ μΈ μν₯μ λ―ΈμΉ©λλ€. λΆνμν μ€ν¬λ¦½νΈλ deferλ async μμ±μ μ¬μ©νμ¬ λΉλκΈ°μ μΌλ‘ λ‘λ©νκ³ , μ½λλ₯Ό μ΅μν(Minify)νμ¬ μ€ν μκ°μ λ¨μΆν΄μΌ ν©λλ€.
8. λ λλ§ νΈλ¦¬ κ΅¬μ± (Render Tree Creation) λ° 9. λ μ΄μμ κ³μ° (Reflow)
λΈλΌμ°μ λ DOMκ³Ό CSSOMμ κ²°ν©νμ¬ λ λλ§ νΈλ¦¬λ₯Ό μμ±ν©λλ€. λ λλ§ νΈλ¦¬λ νλ©΄μ μ€μ λ‘ κ·Έλ €μ§ μμμ μ 보λ§μ ν¬ν¨ν©λλ€. μ΄ν λΈλΌμ°μ λ λ λλ§ νΈλ¦¬λ₯Ό κΈ°λ°μΌλ‘ κ° μμμ μ νν μμΉμ ν¬κΈ°λ₯Ό κ³μ°ν©λλ€. μ΄ κ³Όμ μ λ μ΄μμ λλ 리νλ‘μ°λΌκ³ ν©λλ€.
κ²μ μ΅μ νμμ κ°μ₯ μ€μν CLS μΈ‘μ κ°μ΄ μ΄ λΆλΆμμ κ°μ₯ λ§μ λ¬Έμ λ₯Ό μΌμΌν€κ² λ©λλ€. μκΈ°μΉ μμ λ μ΄μμ λ³κ²½μ μ΅μννκΈ° μν΄ μ΄λ―Έμ§μ widthμ heightλ₯Ό λͺ
μνκ±°λ, κ΄κ³ μμμ 곡κ°μ 미리 ν보ν΄μΌ CLS(Cumulative Layout Shift)λ₯Ό λ°©μ§ν μ μμ΅λλ€.
λΈλ‘ μμ: κΈ°λ³Έμ μΌλ‘ μ 체 λλΉλ₯Ό μ°¨μ§νλ©°, μ€λ°κΏμ λ°μμν΅λλ€.
μΈλΌμΈ μμ: κΈ°λ³Έμ μΌλ‘ μ½ν μΈ μ λλΉμ λ§μΆμ΄ λ°°μΉλλ©°, μ€λ°κΏμ λ°μμν€μ§ μμ΅λλ€.
9. νμΈν (Painting) λ° 11. μ»΄ν¬μ§ν (Compositing)
λΈλΌμ°μ λ κ° μμλ₯Ό νλ©΄μ 그립λλ€. μ΄ κ³Όμ μμλ μμ, ν μ€νΈ, μ΄λ―Έμ§ λ±μ΄ μ€μ λ‘ λ λλ§λ©λλ€. μ»΄ν¬μ§ν μ κ°κ°μ λ λλ§λ μμλ₯Ό κ²°ν©νμ¬ μ΅μ’ μ μΌλ‘ νλ©΄μ νμνλ κ³Όμ μ λλ€. 볡μ‘ν λ μ΄μμμ κ²½μ°, λΈλΌμ°μ λ μ¬λ¬ λ μ΄μ΄λ‘ ꡬμ±λ νμ΄μ§λ₯Ό μ΄λ μ²λ¦¬νλ©°. κ° λ μ΄μ΄λ λ 립μ μΌλ‘ λ λλ§λλ©°, μ΅μ’ μ μΌλ‘ νλ©΄μ νμλκΈ° μ μ ν©μ³μ§λλ€.
10. νμ΄μ§ λ‘λ© μλ£ (Load Event)
λͺ¨λ 리μμ€κ° λ‘λλκ³ , JavaScriptκ° μ€νλκ³ , νμ΄μ§κ° λ λλ§λλ©΄μ λΈλΌμ°μ μ νμ΄μ§μ λ‘λ©μ΄ μλ£λλ μμ μ λλ€.

Core Web Vitals μ§νμ λ‘λ© λ¨κ³λ³ μ°κ΄μ± μ 리
Googleμ΄ μ μν Core Web Vitalsλ μ¬μ©μ κ²½νμ μΈ‘μ νλ ν΅μ¬ μ§νμ΄λ©°, μΉνμ΄μ§ λ‘λ©μ κ° λ¨κ³μ λ°μ νκ² κ΄λ ¨λμ΄ μμ΅λλ€. μλλ μ£Όμ μ§νμ μ΅μ νκ° νμν λ‘λ© λ¨κ³λ₯Ό μ 리ν νμ λλ€.
| Core Web Vital μ§ν | μΈ‘μ λ΄μ© | μνΈ κΈ°μ€ | μ£Όμ κ΄λ ¨ λ‘λ© λ¨κ³ | ν΅μ¬ μ΅μ ν μ λ΅ |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) |
λ‘λ© μ±λ₯ (κ°μ₯ ν° μ½ν μΈ νμ μκ°) | 2.5μ΄ μ΄λ΄ | 1~6λ¨κ³ (νΉν, μλ² μλ΅, μ΄λ―Έμ§ λ‘λ©, CSS μ°¨λ¨) | TTFB λ¨μΆ, Critical CSS μΈλΌμΈ, 리μμ€ μ¬μ λ‘λ© |
| INP (Interaction to Next Paint) |
μνΈμμ© λ° λ°μμ± (μ¬μ©μ μ λ ₯ ν νλ©΄ λ°μκΉμ§μ μ§μ° μκ°) | 200ms λ―Έλ§ | 7λ¨κ³ (JavaScript μ€ν) | JavaScript μ΅μν/λΆν , λ©μΈ μ€λ λ μ μ μκ° λ¨μΆ |
| CLS (Cumulative Layout Shift) |
μκ°μ μμ μ± (μκΈ°μΉ μμ λ μ΄μμ μ΄λ) | 0.1 λ―Έλ§ | 9λ¨κ³ (λ μ΄μμ κ³μ°) | μ΄λ―Έμ§/κ΄κ³ μμ ν¬κΈ° λͺ μ, μΉ ν°νΈ λ‘λ© μ μ΄ |
Q: Critical CSSλ₯Ό μΈλΌμΈμΌλ‘ μ²λ¦¬νλ κ²μ΄ μ λ§ μλ κ°μ μ λμμ΄ λλμ?
A: λ€, λ§€μ° ν¨κ³Όμ μ λλ€. Critical CSSλ 첫 νλ©΄μ λ λλ§νλ λ° νμν μ΅μνμ CSSμ λλ€. μ΄ CSSλ₯Ό HTML νμΌ λ΄μ μΈλΌμΈμΌλ‘ μ½μ νλ©΄, λΈλΌμ°μ κ° μΈλΆ CSS νμΌμ μμ²νκ³ λ€μ΄λ‘λνλ μκ°μ μ μ½νμ¬ CSSOM μμ± μκ°μ λ¨μΆνκ³ FCP(First Contentful Paint)λ₯Ό λΉ λ₯΄κ² κ°μ ν μ μμ΅λλ€.
Q: deferμ async μμ±μ JavaScript λ‘λ©μ μ΄λ»κ² λ€λ₯Έ μν₯μ λ―ΈμΉλμ?
A: λ μμ± λͺ¨λ JavaScriptλ₯Ό λΉλκΈ°μ μΌλ‘ λ€μ΄λ‘λνμ¬ HTML νμ± μ°¨λ¨μ λ°©μ§ν©λλ€. asyncλ λ€μ΄λ‘λκ° μλ£λλ μ¦μ μ€νλλ―λ‘ μ€ν μμκ° λ³΄μ₯λμ§ μμ§λ§, deferλ λ€μ΄λ‘λκ° μλ£λ ν HTML νμ±μ΄ λλλ μμ (DOM μμ± μλ£ μ§μ )μ λ¬Έμ μμλλ‘ μ€νλμ΄ μ€ν μμκ° λ³΄μ₯λ©λλ€. λ³΄ν΅ λ€λ₯Έ μ€ν¬λ¦½νΈμ μμ‘΄νμ§ μλ μ€ν¬λ¦½νΈμλ asyncλ₯Ό, DOMμ μμ‘΄νκ±°λ μμκ° νμν μ€ν¬λ¦½νΈμλ deferλ₯Ό μ¬μ©ν©λλ€.
Q: μΉνμ΄μ§ λ‘λ© λ¨κ³ μ€ CLSμ κ°μ₯ ν° μν₯μ λ―ΈμΉλ λ¨κ³λ 무μμ΄λ©°, μ΄λ»κ² λ°©μ§ν΄μΌ νλμ?
A: CLS(Cumulative Layout Shift)μ κ°μ₯ ν° μν₯μ λ―ΈμΉλ λ¨κ³λ 9. λ μ΄μμ κ³μ°κ³Ό 7. JavaScript μ€νμ
λλ€. νΉν, λ‘λ©λ 리μμ€(μ΄λ―Έμ§, κ΄κ³ , ν°νΈ)κ° κ³΅κ°μ ν보νμ§ λͺ»ν μ± λ€λ¦κ² λνλ λ μ΄μμμ λ°μ΄λ΄λ κ²½μ°κ° λ§μ΅λλ€. λ°©μ§μ±
μΌλ‘λ μ΄λ―Έμ§/κ΄κ³ μμμ width/heightλ₯Ό λͺ
μνμ¬ κ³΅κ°μ 미리 ν보νκ³ , μΉ ν°νΈ λ‘λ© μ font-display: swapμ μ¬μ©νμ¬ CLS λ°μμ μ΅μνν΄μΌ ν©λλ€.