๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ‘‰ Web

๐ŸŽˆ CORS๋Š” ์™œ ์ด๋ ‡๊ฒŒ ์šฐ๋ฆฌ๋ฅผ ํž˜๋“ค๊ฒŒ ํ•˜๋Š”๊ฑธ๊นŒ?โ€‹

๐ŸŽˆ ๋ธŒ๋ผ์šฐ์ €์˜ ๋™์ž‘ ์›๋ฆฌโ€‹

๐ŸŽˆ CSR vs SSRโ€‹

๋ชจ๋ฐ”์ผ ์‹œ๋Œ€๊ฐ€ ๋„๋ž˜ํ–ˆ๊ณ  ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ๋งž์ถฐ์ง„ ์›น ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋‹ˆ์ฆˆ๊ฐ€ ํญ๋ฐœ์ ์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ์ด์Šˆ๋„ ํ•จ๊ป˜ ๊ฑฐ๋ก ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํƒ‘์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋‚ฎ์€ ๋ชจ๋ฐ”์ผ, ์Šค๋งˆํŠธํฐ์„ ํ†ตํ•ด ์›นํŽ˜์ด์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ธฐ์กด์— ์žˆ์—ˆ๋˜ ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅธ ์ ‘๊ทผ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜จ๊ฒŒ SPA ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SPA๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋กœ๋“œ๋˜๊ณ  ๋‚œ ๋’ค์— ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ตœ์ดˆ ํ•œ๋ฒˆ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋”ฉํ•œ ์ดํ›„ ๋ถ€ํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ด์ „์— ์š”์ฒญ ์‹œ ๋งˆ๋‹ค ์ƒˆ๋กœ๊ณ ์นจ์ด ์ผ์–ด๋‚˜๋ฉฐ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ํ•ด์„ํ•˜๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์€ MPA ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. SPA๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์žฌ๊ณตใ…‡ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋‹จ์ง€ JSON ํŒŒ์ผ๋งŒ ๋ณด๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ—€๊ณ , Html์„ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํด๋ผ์ด์–ธํŠธ ์ชฝ์ด ์ ์  ๋ฌด๊ฑฐ์›Œ์ง€์ž ์ด์— ๋ฐ˜๋Œ€๋กœ view๋งŒ ๊ด€๋ฆฌํ•˜์ž๋Š” ์ฒ ํ•™์œผ๋กœ React๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ์ด๋ ‡๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์˜ ์‹ธ์›€์ด ์‹œ์ž‘๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋‹ค์‹œ ์ฝ์–ด๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ธก์—์„œ ๋ Œ๋”๋งํ•˜์—ฌ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์ฝ์–ด๋“ค์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅธ ์ธํ„ฐ๋ ‰์…˜์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์€ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์˜ค๋Š” ์‹œ๊ฐ„, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฝ์–ด๋“ค์ด๋Š” ์‹œ๊ฐ„, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊นŒ์ง€ ๋ชจ๋‘ ๋งˆ์ณ์•ผ ์ฝ˜ํ…์ธ ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ดˆ๊ธฐ ๊ตฌ๋™ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์น˜๋ช…์ ์ธ ๋‹จ์ ์€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์˜ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์›น ํฌ๋กค๋Ÿฌ, ๋ด‡๋“ค์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ธ ๊ฒฝ์šฐ JS๋ฅผ ์ด์šฉํ•œ ๋ Œ๋”๋ง์ด ์•„๋‹ˆ๊ธฐ ๋–„๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์— ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ์ดˆ๊ธฐ ๋กœ๋”ฉ์€ ๋น ๋ฅด์ง€๋งŒ, ๋งค๋ฒˆ ํŽ˜์ด์ง€ ์š”์ณฅ๋–„๋งˆ๋‹ค ์ƒˆ๋กœ๊ณ ์นจ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด SPA๋ณด๋‹ค ์ข‹์ง€ ๋ชปํ•˜๊ณ , ๋งค๋ฒˆ ์š”์ฒญ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง‘๋‹ˆ๋‹ค.

๐ŸŽˆ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • (Critical Rendering Path)โ€‹

์šฐ๋ฆฌ๊ฐ€ ์ฃผ์†Œ์ฐฝ์— url๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„์—๋Š” ์‘๋‹ต์œผ๋กœ HTML ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ ค์ฃผ๋Š”๋ฐ, ์ด HTML ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ณด์ด๋Š” ํ™”๋ฉด์œผ๋กœ ๊ทธ๋ฆฌ๊ธฐ๊นŒ์ง€ ๋‹จ๊ณ„๋ฅผ critical rendering path๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  1. ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ฐ›์€ HTML ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ javascript ํŒŒ์ผ์„ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ ๋ฐ›์•„์˜ค๊ณ  ์‹คํ–‰ํ•  ๋–„๊นŒ์ง€ ํŒŒ์‹ฑ์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
  2. ์ด HTML ํŒŒ์‹ฑํ•œ ๊ฒฐ๊ณผ๋กœ DOM Tree๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ํŒŒ์‹ฑํ•˜๋Š” ์ค‘ CSS ํŒŒ์ผ ๋งํฌ๋ฅผ ๋งŒ๋‚˜๋ฉด CSS ํŒŒ์ผ์„ ์š”์ฒญํ•ด์„œ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
  4. CSS ํŒŒ์ผ์„ ์ฝ์–ด์„œ CSSOM์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. DOM Tree์™€ CSSOM์ด ๋ชจ๋‘ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ด ๋‘˜์„ ์‚ฌ์šฉํ•ด Render Tree๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ด Render Tree๋Š” ์‹ค์ œ๋กœ ๋ˆˆ์— ๋ณด์ด๋Š” ์นœ๊ตฌ๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  6. Render Tree์— ์žˆ๋Š” ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋“ค์ด ํ™”๋ฉด์˜ ์–ด๋””์— ์–ด๋–ป๊ฒŒ ์œ„์น˜ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” Layout ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š”๋ฐ ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์ด ๋ณ€๊ฒฝ๋˜๋ฉด Render Tree๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ์ƒ๋žต๋˜๊ณ , Layout์ด ์ผ์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  7. ์ด์ œ Render Tree ๊ฐ ๋…ธ๋“œ๋“ค์„ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ฒŒ ๋˜๋Š” Paint ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽˆ Reflow or Repaint(or ReDraw)๊ณผ์ • ์„ค๋ช… ๋ฐ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•โ€‹

reflow๋Š” ์ƒ์„ฑ๋œ DOM ๋…ธ๋“œ์˜ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์น˜ ๋ณ€๊ฒฝ์‹œ ์˜ํ–ฅ์„ ๋ฐ›์€ ๋ชจ๋“  ๋…ธ๋“œ ์ˆ˜์น˜๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์—ฌ ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. reflow๊ณผ์ •์ด ๋๋‚œ ๋’ค ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์„ repaint๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์ด์ œ reflow๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

function reflow () {
document.getElementById('container').style.width = '600px';
return false;
}

๋ณ€๊ฒฝ๋”˜ ์Šคํƒ€์ผ ์ˆ˜์น˜ ๊ณ„์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ณ , reflow ๊ณผ์ •์ด ์ˆ˜ํ–‰๋˜๊ณ  ์ƒ์„ฑ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๋Š” repaint๊ณผ์ •์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

repaint ๋ฐœ์ƒ์€ ์ด์œ ์•ผ background-color๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ ˆ์ด์•„์›ƒ ์ˆ˜์น˜๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ reflow๊ณผ์ •์ด ์ƒ๋žต๋œ repaint ๊ณผ์ •๋งŒ ์ผ์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽˆ CORSโ€‹

์›น์—์„œ ๋‹ค๋ฅธ ์ถœ์ฒ˜๋กœ์˜ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋‘ ๊ฐ€์ง€ ์ •์ฑ…์ด ์กด์žฌํ•˜๋Š”๋ฐ ํ•˜๋‚˜๊ฐ€ CORS๊ณ  ํ•˜๋‚˜๊ฐ€ SOP์ž…๋‹ˆ๋‹ค. CORS๋Š” ์„œ๋กœ๋‹ค๋ฅธ ์ถœ์ฒ˜๋ผ๋ฆฌ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ •์ฑ…์ด๊ณ  SOP๋Š” ์„œ๋กœ๋‹ค๋ฅธ ์ถœ์ฒ˜๋ผ๋ฆฌ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ๋ณด์•ˆ์ ์ธ ๋ฌธ์ œ ๋•Œ๋ฌธ์ธ๋ฐ ์•„๋ฌด๋Ÿฐ ์ œ์•ฝ์ด ์—†์œผ๋ฉด ์•…์˜๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณธ ํ›„ CSRF์™€ XSS์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ณฅํ•  ๋•Œ๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ ํ—ค๋”์— Origin์ด๋ผ๋Š” ํ•„๋“œ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์ถœ์ฒ˜๋ฅผ ํ•จ๊ป˜ ๋‹ด์•„๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ดํ›„ ์„œ๋ฒ„๊ฐ€ ์ด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ํ•  ๋•Œ ์‘๋‹ต ํ—ค๋”์— Access-Control-Allow-Origin ์ด๋ผ๋Š” ๊ฐ’์— ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ ์ถœ์ฒ˜๋ฅผ ๋‚ด๋ ค์ฃผ๊ณ , ์ดํ›„ ์‘๋‹ต์„ ๋ฐ›์€ ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ์˜ Origin๊ณผ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ค€ ์‘๋‹ต์˜ Access-Control-Allow-Origin์„ ๋น„๊ตํ•ด๋ณธ ํ›„ ์ด ์‘๋‹ต์ด ์œ ํšจํ•œ ์‘๋‹ต์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์ƒ์—์„œ key/value ํ˜•ํƒœ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ value๋Š” ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋‘ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์„ ๋”ฐ๋ฅด๊ธฐ ๋–„๋ฌธ์— ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋ฒ„์— ์˜ํ•ด์„œ ์ƒ์„ฑ๋˜๋ฉฐ ์ง€์†์‹œ๊ฐ„์„ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฉ๋Ÿ‰์€ 5kb์ •๋„์ด๋ฉฐ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ทจ์•ฝ์ ์œผ๋กœ XSS/CSRF ๊ณต๊ฒฉ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ €์˜ ๊ฒฝํ—˜์ƒ httponly ์†์„ฑ์„ true๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , security ์†์„ฑ์„ true๋กœ ๋ณ€๊ฒฝํ•ด์„œ
local storage๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑ๋˜๋ฉฐ ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ• ๋–„๊นŒ์ง€ ์œ ์ง€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์šฉ๋Ÿ‰์€ 5mb์—์„œ 10mb์ •๋„์ด๋ฉฐ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ์ทจ์•ฝ์ ์œผ๋กœ๋Š” XSS ๊ณต๊ฒฉ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
session storage๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฐ™์€ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜์ง€๋งŒ ๋‹ค๋ฅธ์ ์œผ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ญ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽˆ XSS์™€ CSRFโ€‹

XSS(Cross Site Scription)๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์œผ๋กœ ์•…์˜์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์ด๋ฅผ ์—ด๋žŒํ•œ ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๊ฐ€ ํ•ด์ปค์—๊ฒŒ ์ „์†ก์‹œํ‚ค๋ฉฐ, ์ด ํƒˆ์ทจํ•œ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์„ธ์…˜์„ ํ•˜์ด์ œํ‚นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋กœ์ธํ•ด์„œ ์„ธ์…˜ ID๋ฅผ ๊ฐ€์ง„ ์ฟ ํ‚ค๋กœ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๊ฒ๋‹ˆ๋‹ค.

CSRF(Cross Site Request Forgery) ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰์œ„๋ฅผ ํŠน์ •ํ•œ ์›น์‚ฌ์ดํŠธ์— requestํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์„ ๋งํ•˜๋Š”๋ฐ ์œ ์ €์˜ ๊ถŒํ•œ์„ ๋„์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด์ปค๊ฐ€ ๋งŒ๋“  ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๊ฑฐ๋‚˜, ์œ„์กฐ ์š”์ฒญ์„ ์ „์†กํ•˜๋Š” ์„œ๋น„์Šค์— ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์ƒํ™ฉ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽˆ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์ โ€‹

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ตฌ์กฐ๋‚˜ ๋ผˆ๋Œ€๊ฐ™์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”๋ฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ์ œ์–ด์˜ ์ฃผ์ฒด๊ฐ€ ์–ด๋””์—/๋ˆ„๊ตฌ์— ์žˆ๋Š๋ƒ๊ฐ€ ์ค‘์š”ํ•œ๋ฐ, ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์Šค์Šค๋กœ ์ฅ๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ๊ทธ ์ •ํ•ด์ง„ ํ‹€์— ๋งž์ถฐ์„œ (์•ˆ์— ๋“ค์–ด๊ฐ€์„œ) ์ฝ”๋“œ๋ฅผ ์งœ ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ œ์–ด์˜ ์ฃผ์ฒด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฅ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ํ๋ฆ„์„ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ†ฑ, ์‚ฝ, ๋ง์น˜ ๊ฐ™์€ ์—ฐ์žฅ์„ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ†ฑ, ์‚ฝ, ๋ง์น˜๊ฐ™์€ ๊ฒƒ๋“ค์€ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์„ ํƒํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฐฐ, ์ฐจ, ๋น„ํ–‰๊ธฐ๊ฐ™์€ ํƒˆ๊ฒƒ์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋Š”๋ฐ, ๋ฐฐ, ์ฐจ ๋น„ํ–‰๊ธฐ๋Š” ๊ฐ์ž์˜ ๋ชฉ์ ์— ๋งž๊ฒŒ (๋ฐฐ๋Š” ๋ฐ”๋‹ค, ๋น„ํ–‰๊ธฐ๋Š” ํ•˜๋Š˜, ์ฐจ๋Š” ๋•…)์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์ฐจ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ธฐ์–ด, ํŒจ๋‹ฌ๋“ฑ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“ค ํ•„์š” ์—†์ด ๋ชฉ์ ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽˆ Core Web Vitalsโ€‹

  • ์ตœ๋Œ€ ์ฝ˜ํ…์ธ  ํŽ˜์ธํŠธ (LCP): ๋กœ๋“œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์ˆ˜ํ•œ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์ฒ˜์Œ ๋กœ๋“œ๋˜๊ธฐ 2.5์ดˆ ์ด๋‚ด์— LCP๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›น ํŽ˜์ด์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ๋กœ๋“œ๋˜๋Š” ์‹œ์ ์—๋งŒ ์ง‘์ค‘ํ•จ. ์ฆ‰, ๋ทฐํฌํŠธ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ํŽ˜์ด์ง€ ์š”์†Œ(ํฐ ํ…์ŠคํŠธ ๋ธ”๋ก, ์ด๋ฏธ์ง€ ๋˜๋Š” ๋น„๋””์˜ค)๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •
  • ๋‹ค์Œ ํŽ˜์ธํŠธ์— ๋Œ€ํ•œ ์ƒํ˜ธ์ž‘์šฉ (INP): ์ƒํ˜ธ์ž‘์šฉ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์ˆ˜ํ•œ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€์˜ INP๊ฐ€ 200๋ฐ€๋ฆฌ์ดˆ ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • INP์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ˜ธ์ž‘์šฉ ์œ ํ˜•๋งŒ ์ค€์ˆ˜๋ฉ๋‹ˆ๋‹ค.
      • ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญ
      • ํ„ฐ์น˜์Šคํฌ๋ฆฐ์ด ์žˆ๋Š” ๊ธฐ๊ธฐ๋ฅผ ํƒญํ•ฉ๋‹ˆ๋‹ค.
      • ์‹ค์ œ ํ‚ค๋ณด๋“œ ๋˜๋Š” ํ„ฐ์น˜ ํ‚ค๋ณด๋“œ์˜ ํ‚ค๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
    • ์›๋ž˜ ์ตœ์ดˆ ์ž…๋ ฅ ์ง€์—ฐ(FID)์˜€์—ˆ์Šต๋‹ˆ๋‹ค. INP๋Š” ์ฒซ ์ž…๋ ฅ ์ง€์—ฐ (FID)์˜ ํ›„์† ์ธก์ •ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ๋ฐ˜์‘์„ฑ ์ธก์ •ํ•ญ๋ชฉ์ด์ง€๋งŒ FID๋Š” ํŽ˜์ด์ง€์—์„œ์˜ ์ฒซ ์ƒํ˜ธ์ž‘์šฉ์˜ ์ž…๋ ฅ ์ง€์—ฐ๋งŒ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. INP๋Š” ์ž…๋ ฅ ์ง€์—ฐ๋ถ€ํ„ฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆด ๋•Œ๊นŒ์ง€์˜ ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์„ ๊ด€์ฐฐํ•˜์—ฌ FID๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐœ์„  ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ๊ฐ„ ๋‹จ์ถ•, ๊ธด ์ž‘์—…์„ ๋” ์ž‘์€ ๋น„๋™๊ธฐ ์ž‘์—…์œผ๋กœ ๋ถ„ํ• ํ•˜๊ฑฐ๋‚˜, ๋ถˆํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ ํšŸ์ˆ˜ (CLS): ์‹œ๊ฐ์  ์•ˆ์ •์„ฑ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์ˆ˜ํ•œ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€์˜ CLS๋ฅผ 0.1. ์ดํ•˜๋กœ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์ƒ๋œ ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ๊ณผ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ
      • ๋ชจ๋“  ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ์ด ๋‚˜์œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋งŽ์€ ๋™์  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํŽ˜์ด์ง€์—์„œ ์š”์†Œ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ž์ฃผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
        • ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์ž‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ
          • ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ (์˜ˆ: ๋งํฌ ํด๋ฆญ ๋˜๋Š” ํƒญ, ๋ฒ„ํŠผ ๋ˆ„๋ฅด๊ธฐ, ๊ฒ€์ƒ‰์ฐฝ์— ์ž…๋ ฅ)์— ๋Œ€ํ•œ ๋ฐ˜์‘์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ ์ „ํ™˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์— ์ถฉ๋ถ„ํžˆ ๊ฐ€๊น๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
        • ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ ์ „ํ™˜
          • ํŽ˜์ด์ง€์—์„œ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ณ  ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ด๋™ํ•˜๋Š” ์ฝ˜ํ…์ธ ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ €ํ•˜์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ์œ„์น˜์—์„œ ๋‹ค์Œ ์œ„์น˜๋กœ ์ ์ง„์ ์ด๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋™ํ•˜๋Š” ์ฝ˜ํ…์ธ ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ™ฉ์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์ƒํƒœ ๋ณ€๊ฒฝ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
          • CSS transform ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๊ณ ๋„ ์š”์†Œ์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
            • height ๋ฐ width ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  transform: scale()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
        • ์›นํฐํŠธ ๋กœ๋”ฉ ์ตœ์ ํ™”

๐ŸŽˆ lighthouseโ€‹

์›นํŽ˜์ด์ง€ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ž๋™ํ™” ๋„๊ตฌ. ๋ชจ๋“  ๊ณต๊ฐœ ์›นํŽ˜์ด์ง€ ๋˜๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•œ ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์›น ์•ฑ, ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” ๋“ฑ์— ๋Œ€ํ•œ ๊ฐ์‚ฌ๊ฐ€ ์ œ๊ณต.

  • ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ์ฒซ ํŽ˜์ธํŠธ(First Contentful Paint)
    • FCP๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒซ ๋ฒˆ์งธ DOM ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •
    • FCP์—์„œ ํŠนํžˆ ์ค‘์š”ํ•œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ๊ธ€๊ผด ๋กœ๋“œ ์‹œ๊ฐ„์ด๋‹ค. ๊ธ€๊ผด ๋กœ๋“œ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์€ ์›น ๊ธ€๊ผด ๋กœ๋“œ ์ค‘์— ํ…์ŠคํŠธ๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋˜๋„๋ก ํ•˜๋ฉด๋œ๋‹ค.
      • font-display ๋ฅผ ์‚ฌ์šฉํ•ด์„œ font face๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ font face๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์š”์†Œ๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๋Œ€์ฒด ํฐํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•˜๋„๋ก ํ•œ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ font face๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๋“œ๋˜๋ฉด ์š”์ฒญ๋œ ํฐํŠธ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋ง ๋œ๋‹ค.
    • ๊ธฐํƒ€ FCP ๊ฐœ์„  ๋ฐฉ๋ฒ•
      • ๋ Œ๋”๋ง ์ฐจ๋‹จ ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ
      • CSS ์ถ•์†Œ
      • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์‚ญ์ œ
      • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” JavaScript ์‚ญ์ œํ•˜๊ธฐ
      • ํ•„์ˆ˜ ์ถœ์ฒ˜์— ์‚ฌ์ „ ์—ฐ๊ฒฐ
      • ์„œ๋ฒ„ ์‘๋‹ต ์‹œ๊ฐ„ (TTFB) ๋‹จ์ถ•
      • ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ํŽ˜์ด์ง€ ๋ฆฌ๋””๋ ‰์…˜ ํ”ผํ•˜๊ธฐ
      • ์ฃผ์š” ์š”์ฒญ ๋ฏธ๋ฆฌ ๋กœ๋“œ
      • ๋ฐฉ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ํŽ˜์ด๋กœ๋“œ ๋ฐฉ์ง€
      • ํšจ์œจ์ ์ธ ์บ์‹œ ์ •์ฑ…์œผ๋กœ ์ •์  ์• ์…‹ ์ œ๊ณต
      • ๊ณผ๋„ํ•œ DOM ํฌ๊ธฐ ํ”ผํ•˜๊ธฐ
      • ์ค‘์š”ํ•œ ์š”์ฒญ ๊นŠ์ด ์ตœ์†Œํ™”
      • ์š”์ฒญ ์ˆ˜๋Š” ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์ „์†ก ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ
  • ์†๋„ ์„น์ธ(speed index)
  • ์ด ์ฐจ๋‹จ ์‹œ๊ฐ„(Total Blocking Time)
    • TBT๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋งˆ์šฐ์Šค ํด๋ฆญ, ํ™”๋ฉด ํƒญ ๋˜๋Š” ํ‚ค๋ณด๋“œ ๋ˆ„๋ฆ„๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์‘๋‹ตํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ฐจ๋‹จ๋œ ์ด ์‹œ๊ฐ„์„ ์ธก์ •
    • ํ•ฉ๊ณ„๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ์ฒซ ํŽ˜์ธํŠธ(FCP)์™€ ์ƒํ˜ธ์ž‘์šฉ(TTI) ์‹œ๊ฐ„ ์‚ฌ์ด์— ๋ชจ๋“  ์žฅ๊ธฐ ์ž‘์—…์˜ ์ฐจ๋‹จ ๋ถ€๋ถ„์„ ๋”ํ•˜์—ฌ ๊ณ„์‚ฐ
    • TBT ์ ์ˆ˜๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•
      • ๋ถˆํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ, ํŒŒ์‹ฑ ๋˜๋Š” ์‹คํ–‰. ์„ฑ๋Šฅ ํŒจ๋„์—์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋™์•ˆ ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ž‘์—…์„ ์‹คํ–‰ํ• ๋•Œ ๋ฐœ์ƒ. ์ฝ”๋“œ ๋ถ„ํ• ์„ ํ†ตํ•ด JavaScript ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์„œ๋“œ ํŒŒํ‹ฐ JavaScript๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋กœ๋“œํ•˜๋ฉด TBT ์ ์ˆ˜๊ฐ€ ๊ฐœ์„ ๋œ๋‹ค.
      • ๋น„ํšจ์œจ์ ์ธ JavaScript๋ฌธ์„ ์ œ๊ฑฐ
  • ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ์ตœ๋Œ€ ํŽ˜์ธํŠธ(Largest Contentful Paint)
    • LCP๋Š” ํ‘œ์‹œ ์˜์—ญ์—์„œ ๊ฐ€์žฅ ํฐ ์ฝ˜ํ…์ธ  ์š”์†Œ๊ฐ€ ํ™”๋ฉด์— ๋ Œ๋”๋ง๋  ๋•Œ ์ธก์ •
    • LCP ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ HTML ๋ฌธ์„œ ๋ฐ LCP ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•จ.
    • LCP ์ ์ˆ˜๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•
      • LCP ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€ HTML ๋ฌธ์„œ ๋ฐ LCP ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด์•ผํ•จ. LCP๋Š” ์ด 4๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์ง.
        • ์ฒซ ๋ฐ”์ดํŠธ๊นŒ์ง€์˜ ์‹œ๊ฐ„ (TTFB)
        • ๋ฆฌ์†Œ์Šค ๋กœ๋“œ ์ง€์—ฐ
        • ๋ฆฌ์†Œ์Šค ๋กœ๋“œ ์‹œ๊ฐ„
        • ์š”์†Œ ๋ Œ๋”๋ง ์ง€์—ฐ