ํฌ๋กฑ๋‹˜ ๋งˆ์Šคํ„ฐํด๋ž˜์Šค ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์€ ์ค‘์š”

Core Web Vitals

First contentful paint

์ตœ์ดˆ ์ฝ˜ํ…์ธ ํ’€ ํŽ˜์ธํŠธ(FCP)๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ DOM์—์„œ ์ฒซ ๋ฒˆ์งธ ์ฝ˜ํ…์ธ  ๋น„ํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ, ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ๋กœ ๋กœ๋“œ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ๋“œ๋ฐฑ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. FCP ์ดํ›„์— ์‚ฌ์šฉ์ž๋Š” ์›น ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ดˆ ์ฝ˜ํ…์ธ ํ’€ ํŽ˜์ธํŠธ ํƒ€์ž„์Šคํƒฌํ”„๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€(๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ํฌํ•จ), ๋น„๋””์˜ค, ๊ทธ๋ ค์ง„ ์บ”๋ฒ„์Šค ๋˜๋Š” ๋น„์–ด์žˆ์ง€ ์•Š์€ SVG๋ฅผ ์ฒ˜์Œ ๋ Œ๋”๋งํ•œ ์‹œ์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ iframe์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์™ธํ•˜์ง€๋งŒ ๋ณด๋ฅ˜ ์ค‘์ธ ์›น ๊ธ€๊ผด์ด ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ์†Œ๋น„ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ์€ ์ด ์‹œ์ ์ด ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค.

Largest Contentful Paint(์ œ์ผ ์ค‘์š”)

LCP๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋กœ ์ฒ˜์Œ ์ด๋™ํ•œ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ํ‘œ์‹œ ์˜์—ญ์— ํ‘œ์‹œ๋˜๋Š” ๊ฐ€์žฅ ํฐย ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ ๋ธ”๋ก ๋˜๋Š” ๋™์˜์ƒ์˜ ๋ Œ๋”๋ง ์‹œ๊ฐ„์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Cumulative Layout Shift

๋ฐฉ๋ฌธ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ ๊ฐ€ ์–ผ๋งˆ๋‚˜โ€Œ ๋ถˆ์•ˆ์ •ํ•œ ์ง€ ์ธก์ •ํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก์ • ํ•ญ๋ชฉ

ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ํŽ˜์ด์ง€์— ๊ฐ‘์ž๊ธฐ ๋ฐœ์ƒํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์˜ ๋ณ€๊ฒฝ์€ ์‹œ๊ฐ์ ์œผ๋กœ ๊ฑฐ์Šฌ๋ฆฌ๋ฉฐ ์‚ฌ์šฉ์ž์˜ ์ฃผ์˜๋ฅผ ์‚ฐ๋งŒํ•˜๊ฒŒ ํ•จ ๋˜ํ•œ ์ž˜๋ชป๋œ ํด๋ฆญ์„ ์œ ๋„ํ•˜์—ฌ ์‹ค์ œ ํ”ผํ•ด๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ  ์•„์ฃผ ์‹ค๋ง์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Œ

CLS(Cumulative Layout Shift)ย ์ธก์ •์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ ์ด๋™(layout shift) ๋นˆ๋„๋ฅผ ์ธก์ •ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘์†๋„ ๊ด€๋ จ ์ง€ํ‘œ - Interaction to Next Paint

https://ui.toast.com/posts/ko_20220512 ๋‹ค์Œ ํŽ˜์ธํŠธ์— ๋Œ€ํ•œ ์ƒํ˜ธ์ž‘์šฉ(Interaction to Next Paint, INP)์€ย ์‘๋‹ต์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ์‹คํ—˜์ ์ธ ํ•„๋“œ ๋ฉ”ํŠธ๋ฆญ INP๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๋ผ์ดํ”„ ์‚ฌ์ดํด๋™์•ˆ ์ผ์–ด๋‚œ ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•œ ์ง€์—ฐ์„ ๊ธฐ๋กํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ˜ธ์ž‘์šฉ์€ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’(๋˜๋Š” ๋งŽ์€ ์ƒํ˜ธ ์ž‘์šฉ์ด ์žˆ๋Š” ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’์— ๊ฐ€๊นŒ์šด ๊ฐ’)์ด ํŽ˜์ด์ง€์˜ INP๋กœ ๊ธฐ๋ก๋œ๋‹ค. INP๊ฐ€ ๋‚ฎ๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ํ•ญ์ƒ ์•ˆ์ •์ ์œผ๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ๋ณด์žฅํ•œ๋‹ค.

๊ฐœ์„ ํ•ด์•ผ ํ•  ํ•ญ๋ชฉ

  • ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์„ ๋น ๋ฅด๊ฒŒ
  • ํ›Œ๋ฅญํ•œ ๋ฐ˜์‘
  • ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ด์–ด์ ธ ๋ณด์ด๊ธฐ

์ตœ์ ํ™” ์ž‘์—… ์ง„ํ–‰ ๋ฐฉ๋ฒ•

**์ง„๋‹จ > ๊ฐœ์„  > ํ…Œ์ŠคํŠธ > ์ง„๋‹จ**

  1. ์ง„๋‹จ

    • ์–ด๋””๊ฐ€ ์™œ ์–ผ๋งˆํผ ๋А๋ฆฐ๊ฐ€?
    • ์–ด๋А ์ธํ„ฐ๋ž™์…˜์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฐ€์น˜๋ฅผ ์ฃผ๋Š”๊ฐ€?
    • ์ •๋Ÿ‰์ ์ธ ์ง€ํ‘œ๋Š” ์–ผ๋งˆ์ธ๊ฐ€?
    • ์–ด๋–ป๊ฒŒ ์ง„๋‹จํ•˜๋Š”๊ฐ€?
      • ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ - lighthouse
      • ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ - performance, memory(๋ˆ„์ˆ˜๋Š” ์—†๋‚˜?)
      • pagespeed insights
  2. ๊ฐœ์„ 

  3. ํ…Œ์ŠคํŠธ

    • side effect๋Š” ์—†๋Š”๊ฐ€?
  4. ์ง„๋‹จ

    • ์–ด๋””๊ฐ€ ์–ผ๋งˆํผ ๋นจ๋ผ์กŒ๋Š”๊ฐ€?

์‹ค์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

1. ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ง€์—ฐ๋ฌธ์ œ ํ•ด๊ฒฐ

  • HTML Parsing ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ธฐ
    • scriptย ์œ„์น˜ ์กฐ์ • (body ๋์œผ๋กœ ์ด๋™)
    • defer/asyncย ์†์„ฑ ํ™œ์šฉ
  • Build๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์ตœ์ ํ™”
    • ์ฝ”๋“œ ์••์ถ• (minification) ๋ฐ ๋ฒˆ๋“ค๋ง
      • ๋ฒˆ๋“ค๋ง์„ ์•ˆํ•˜๋ฉด ํŒŒ์ผ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ณ , ์„œ๋ฒ„์— ๊ทธ๋•Œ๋งˆ๋‹ค ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ํผ. ๋ฒˆ๋“ค๋ง์„ ํ†ตํ•ด์„œ http request ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ
      • ๋ฐฐํฌํ•˜๋Š” ํŒŒ์ผ์„ ์ค„์ž„์œผ๋กœ์จ ๊ด€๋ฆฌ ๋˜ํ•œ ์‰ฌ์›Œ์ง
    • ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ… (Code Splitting)
      • ๋„ˆ๋ฌด ํฐ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„๊ธฐ. ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์€ ์ ์€๋ฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŽ์ด ๋ฐ›์œผ๋ฉด ์ฒซ ๋ Œ๋”๋ง ์†๋„๊ฐ€ ๋А๋ ค์ง
      • ์ ์ ˆํ•œ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฐ›๊ณ  ์บ์‹œ ํšจ๊ณผ๋ฅผ ๋ณด๋ฉด์„œ ์ตœ์ ํ™”
    • ๋‚œ๋…ํ™”
    • Vite,ย ESBuild์™€ ๊ฐ™์€ ์ตœ์‹  ๋นŒ๋“œ ๋„๊ตฌ ํ™œ์šฉ
  • ํด๋ผ์ด์–ธํŠธ ๋™์  ๋ Œ๋”๋ง ํ”ผํ•˜๊ธฐ
    • Server-Side Rendering (SSR)
      • ๋™์ ์œผ๋กœ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง ํ•ด์„œ ์ฃผ๋Š” ๊ฒƒ๋“ค๋กœ ์ปดํŒŒ์ผ๋˜๋Š” ํšจ๊ณผ
      • ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ด ์ฒซ ๋ Œ๋”๋ง ๋•Œ๋Š” ํ›จ์”ฌ ์ข‹์Œ
      • ํ•˜์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  view๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›€
      • ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง , ๋‚˜๋จธ์ง€๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ด ์ด์ƒ์ ์ธ๋ฐ ์„œ๋ฒ„์—์„œ๋Š” ์ด๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›€
    • Pre-Rendering (์˜ˆ:ย prerender-loader)
    • Static Site Generation (SSG)ย ํ™œ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
    • ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•ด๋ณด๊ธฐ
  • Lazy Loading(์ง€์—ฐ๋กœ๋”ฉ)
    • ์Šคํฌ๋กค์ด ๋‚ด๋ ค์ง€๋Š” ์‹œ์ ์— ๋‹จ๊ณ„์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ
    • Lazy Component Loading (Dynamic JS Loading)
    • Image Lazy Loading (loading="lazy")
    • React.lazy๋ฅผ ํ†ตํ•ด ๊ทธ๋•Œ๊ทธ๋•Œ ์ปดํฌ๋„ŒํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
    • IntersectionObserver APIย ํ™œ์šฉ
  • HTTP Header์˜ ์†์„ฑ ํ™œ์šฉ
    • Cache-Control (max-age,ย no-cache,ย no-store)
    • Expires (์บ์‹œ ๋งŒ๋ฃŒ ์‹œ๊ฐ„)
    • Last-Modified / If-Modified-Since (๋งˆ์ง€๋ง‰ ๊ฐฑ์‹  ์‹œ๊ฐ„)
    • ETagย ํ™œ์šฉ: ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ์„œ๋ฒ„์—์„œ ํŒ๋‹จ
      • ์„œ๋ฒ„๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ๋•Œ ETag ๊ฐ’์„ ์ƒ์„ฑํ•ด ์‘๋‹ต ํ—ค๋”์— ํฌํ•จ (ETag: โ€œabc123โ€)
      • ๋ธŒ๋ผ์šฐ์ €๋Š” ์ดํ›„ ์š”์ฒญ์—์„œ If-None-Match ํ—ค๋”์— ETag ๊ฐ’์„ ํฌํ•จ (If-None-Match: โ€œabc123โ€)
      • ์„œ๋ฒ„๋Š” ETag๋ฅผ ๋น„๊ต (๊ฐ’์ด ๊ฐ™์œผ๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ 304 Not Modified๋ฅผ ๋ฐ˜ํ™˜)
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
    • WebP, AVIF ํฌ๋งท์œผ๋กœ ์ด๋ฏธ์ง€ ๋ณ€ํ™˜
    • WOFF2 ํฐํŠธ ํ™œ์šฉ: WOFF๋ณด๋‹ค ๋” ์ž‘์€ ํฌ๊ธฐ๋กœ ์••์ถ• ๊ฐ€๋Šฅ
    • ๊ธฐ์กด ํฐํŠธ ํŒŒ์ผ์„ WOFF2๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„ 

2. ๋ฐ˜์‘ ์ง€์—ฐ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ง€์—ฐ ํ•ด๊ฒฐ

  • ๋ฉ”์ธ ์Šค๋ ˆ๋“œ Blocking ๋ฐฉ์ง€
    • DOM ์ˆ˜์ • ์ตœ์†Œํ™” (Reflow์™€ Repaint ๋‹จ๊ณ„ ์ œ๊ฑฐ ๋…ธ๋ ฅ)
      • reflow๋‚˜ repaint๊ฐ€ ์ตœ๊ทผ๋“ค์–ด์„œ๋Š” ๋ฆฌ์•กํŠธ์—์„œ ์ตœ์ ํ™”๋ฅผ ์‹œ์ผœ์คŒ
    • Reflow ์ค„์ด๊ธฐ
      • Composite ๋‹จ๊ณ„์—์„œ ๋™์ž‘ํ•˜๋„๋ก GPU ๊ฐ€์† ์†์„ฑ ์‚ฌ์šฉ
      • 3D Transform (translate3d)
      • Video/Canvas ์š”์†Œ ํ™œ์šฉ
      • transform/opacityย ๊ธฐ๋ฐ˜ CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ (Keyframes, Transition)
      • will-changeย ์†์„ฑ ์ ์šฉ
  • ์ค‘๋ณต ๊ณ„์‚ฐ ์ค„์ด๊ธฐ
    • Memoization (useMemo)
      • ๊ฐ™์€ ์ž‘์—…์ด ์ผ์–ด๋‚  ํ™•๋ฅ ์ด ์€ ๊ณ„์‚ฐ์— ๋Œ€ํ•ด์„œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜
      • ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์บ์‹œ๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
      • ๋ฆฌ๋ Œ๋”๋ง๋งˆ๋‹ค key value์— ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ์บ์‹ฑ ๋ฐฉ๋ฒ•
  • ๋„คํŠธ์›Œํฌ ์š”์ฒญ ์บ์‹œ ์ „๋žต
    • Service Worker ๋ฐ PWA๋ฅผ ํ™œ์šฉํ•œ ์บ์‹ฑ
    • Cache Header ์ „๋žต
    • Stale-while-Revalidate
      • ์–ด๋А ์ˆœ๊ฐ„๊นŒ์ง€๋Š” ์บ์‹œ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ ๋’ค๋ถ€ํ„ฐ๋Š” ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • Prefetch ๋ฐ Preload ํ™œ์šฉ
    • Preload ์‚ฌ์šฉย :
    • ํŠน์ • ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์„ ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œ
    <link rel="preload" href="/styles/main.css" as="style">
    <link rel="preload" href="/scripts/main.js" as="script">
    
    • Prefetch ์‚ฌ์šฉย :
    • ์˜ˆ์ธก ๋กœ๋”ฉ์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ์— ํ•„์š”ํ•  ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•  ๋•Œ ์‚ฌ์šฉ.
      • react-helmet ๋“ฑ์„ ์‚ฌ์šฉ

    <link rel="prefetch" href="/images/background.jpg">
    

์„ฑ๋Šฅ ๊ด€์ ์œผ๋กœ ๋ณด๋Š” HTTP์˜ ๋ฐœ์ „

1. HTTP/1.1 (1997๋…„)

  • TLS ์•”ํ˜ธํ™” ํ†ต์‹ 
  • Keep-Alive ๊ธฐ๋ณธ ์ œ๊ณต (TCP ์—ฐ๊ฒฐ ์žฌ์‚ฌ์šฉ)
  • XMLHttpRequest
    • fetch โ†’ PromiseํŒจํ„ด์ด ์ ์šฉ๋˜์–ด ์žˆ์ง€๋งŒ XMLHttpRequest๋Š” ํŒจํ„ด์ด ์•ˆ์ ์šฉ๋ผ์žˆ์Œ

2. HTTP/1.1์˜ ํ•œ๊ณ„

  • ๋ฆฌ์†Œ์Šค ์šฐ์„ ์ˆœ์œ„ ์—†์ด ๋‹ค์šด๋กœ๋“œ
  • ํ—ค๋” ํฌ๊ธฐ ์ฆ๊ฐ€
  • ๋™์‹œ์„ฑ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ฐ๊ฒฐ(connection) ํ•„์š”

3. HTTP/2.0 (2015๋…„)

  • HTTP/2.0์˜ ์ŠคํŠธ๋ฆผ-ํ”„๋ ˆ์ž„ ๊ด€๊ณ„
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ๋™์‹œ์— ์ „์†ก ๊ฐ€๋Šฅ
    • ๊ฐ ์ŠคํŠธ๋ฆผ์€ ๋‹ค์ˆ˜์˜ ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ์„ฑ
      • ์˜ˆ:
        • ์ŠคํŠธ๋ฆผ 1 โ†’ ํ”„๋ ˆ์ž„ A, B, C
        • ์ŠคํŠธ๋ฆผ 2 โ†’ ํ”„๋ ˆ์ž„ X, Y, Z
    • ํ”„๋ ˆ์ž„์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ „์†ก๋˜๋ฉฐ ๊ณ ์œ  ID๋ฅผ ๊ฐ€์ง
    • ์ŠคํŠธ๋ฆผ๊ณผ ํ”„๋ ˆ์ž„์˜ ๋…๋ฆฝ์  ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ
  • ๊ธฐ๋Šฅ ๊ฐœ์„ 
    • ๋‹ค์ค‘ ์š”์ฒญ/์‘๋‹ต ์ฒ˜๋ฆฌ (Multiplexing)
    • ํ—ค๋” ํ•„๋“œ ์••์ถ• (HPACK)
      • header packing
    • Server Push ์ง€์›

4. HTTP/3 (2020๋…„)

  • QUIC ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜
    • UDP ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ TCP์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐ
    • 3-way Handshake ์ƒ๋žต
      • ์ ‘์† ์ •๋ณด๋ฅผ ์บ์‹ฑ(RTT) ๋“ฑ์„ ํ†ตํ•ด ์‹ ๋ขฐ์„ฑ ํ™•๋ณด
    • ํŒจํ‚ท ์†์‹ค ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ดย ํŒจํ‚ท ์žฌ์ „์†ก ๋ฐ ์ผ๋ จ๋ฒˆํ˜ธ ์ง€์ •
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ฐ•ํ™”
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌ
    • ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋œ UDP ํŒจํ‚ท ์‚ฌ์šฉ
  • HTTP/3 ์ ์šฉ ์‚ฌ๋ก€
    • ์ฃผ์š” CDN ์ œ๊ณต์ž๋“ค์ด HTTP/3 ์ง€์› (Cloudflare, AWS CloudFront ๋“ฑ)