๋ฐœํ–‰์ผ:

์ˆ˜์ •์ผ:

setTimeout(0)์œผ๋กœ LCP TTI ์ ์ˆ˜ ์˜ฌ๋ฆฌ๋Š”๋ฒ•: ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™”

์ด๋ฒˆ ๊ธ€์€ setTimeout 0 ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ์ง€์—ฐ ๋กœ๋”ฉ์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ, ์• ๋“œ์„ผ์Šค ๊ด‘๊ณ  ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„  ๋ฐ ๋ธ”๋กœ๊ทธ ๋žœ๋”๋ง ์ตœ์ ํ™” ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.๋˜ํ•œ ๋ธ”๋กœ๊ทธ LCP ์ ์ˆ˜ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์›Œ๋“œํ”„๋ ˆ์Šค TTI ๊ฐœ์„  ํ•˜๋Š” ๋ฐฉ๋ฒ•์„๋‹ค๋ฃน๋‹ˆ๋‹ค.


๊ตฌ๊ธ€ ํŽ˜์ด์ง€์Šคํ”ผ๋“œ ์ธ์‚ฌ์ดํŠธ ์ ์ˆ˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ ์œ ์œจ ๋‚ฎ์ถ”๊ธฐ๊ณ Core Web Vitals ์„ฑ๋Šฅ ๊ฐœ์„  ์‹ค๋ฌด ๋ฐฉ๋ฒ•

์›น ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ ์ง€ํ‘œ์ธ ์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ(Core Web Vitals) ์ ์ˆ˜๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ ์•„์ฃผ ์˜๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋ธ”๋กœ๊ฑฐ์™€ ๊ฐœ๋ฐœ์ž๋“ค์ด LCP(์ตœ๋Œ€ ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง ์‹œ๊ฐ„)๋‚˜ TTI(์ƒํ˜ธ์ž‘์šฉ ์‹œ์ž‘ ์‹œ๊ฐ„) ์ ์ˆ˜ ๋•Œ๋ฌธ์— ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๊ณ  ์žˆ์ฃ .

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

setTimeout(..., 0)์˜ ๋งˆ๋ฒ•: ์™œ ์„ฑ๋Šฅ์ด ์ข‹์•„์งˆ๊นŒ?

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด, setTimeout(..., 0)์˜ ๋ชฉ์ ์€ ๊ธฐ๋‹ค๋ฆผ์ด ์•„๋‹ˆ๋ผ ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ํ•ต์‹ฌ์„ ์ด์šฉํ•˜๋Š” ์›๋ฆฌ์ž…๋‹ˆ๋‹ค.

1. ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋น„์šฐ๊ธฐ

setTimeout(..., 0)์˜ ์ฃผ๋œ ๋ชฉ์ ์€ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ๋™๊ธฐ(synchronous) ์ฝ”๋“œ์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ Œ๋”๋ง ์ž‘์—…(Rendering tasks)์ด ์™„๋ฃŒ๋œ ํ›„์— ์‹คํ–‰๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ Task Queue๋กœ ๋ฐ€์–ด ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(avaScript}์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ(Single-threaded) ํ™˜๊ฒฝ์ด๋ฏ€๋กœ, ๊ธด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ UI ๋ Œ๋”๋ง์„ ๋ง‰๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. setTimeout์€ ์ด ์ฝ”๋“œ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋จผ์ € ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ณ (LCP, FCP ๊ฐœ์„ ) ๋‚˜์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ค๋‹ˆ๋‹ค.
  • Time To Interactive (TTI) ๊ฐœ์„ : ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ด€์ ์—์„œ, ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ธ TTI๋ฅผ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

2. ์ž‘๋™ ์›๋ฆฌ (๋งคํฌ๋กœ ํƒœ์Šคํฌ)

setTimeout์˜ ์ง€์—ฐ ์‹œ๊ฐ„(Delay)์„ 0์œผ๋กœ ์„ค์ •ํ•˜๋”๋ผ๋„, ์‹ค์ œ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ตœ์†Œ ์ง€์—ฐ ์‹œ๊ฐ„(Minimum delay)์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ 4ms). ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€, ์ด ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์€ ๋งคํฌ๋กœ ํƒœ์Šคํฌ(Macrotask)์— ์†ํ•˜๋ฉฐ, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝœ ์Šคํƒ(Call Stack)์ด ์™„์ „ํžˆ ๋น„์›Œ์ง€๊ณ  ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ํ›„์—์•ผ ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)์— ์˜ํ•ด ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

  • ์ฝœ ์Šคํƒ(Call Stack) ๋น„์šฐ๊ธฐ: ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ๋™๊ธฐ ์ฝ”๋“œ๊ฐ€ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ Œ๋”๋ง ์™„๋ฃŒ: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•œ ํ”„๋ ˆ์ž„์˜ ํ™”๋ฉด์„ ๋‹ค ๊ทธ๋ฆฐ ํ›„์—์•ผ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ํƒœ์Šคํฌ ํ์— ์žˆ๋Š” setTimeout ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ํ™”๋ฉด ๋จผ์ € ๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ, ๋‚จ๋Š” ์‹œ๊ฐ„์— ์ด ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ด! ๋ผ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ช…๋ นํ•˜๋Š” ์•„์ฃผ ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ธ ๊ฒƒ์ด์ฃ .

setTimeout ํ™œ์šฉ๋ฐฉ๋ฒ• ๋ธ”๋กœ๊ทธ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„ ํ•˜๊ธฐ

๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—๊ฒŒ ์ˆจํ†ต์„ ํ‹”์›Œ์ฃผ๋‹ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ(Single-threaded)๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ์ฝ๋‹ค๊ฐ€ ๊ธด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋‚˜๋ฉด ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ž‘์—…์„ ๋ฉˆ์ถ”๊ณ  ๊ทธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋งค๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ์ž ํ™”๋ฉด์€ ๋ฉˆ์ถ”๊ณ  LCP ์ ์ˆ˜๋Š” ๊นŽ์ด๊ฒŒ ๋˜์ฃ .

ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ setTimeout(..., 0)์œผ๋กœ ๊ฐ์‹ธ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

  1. ํƒœ์Šคํฌ ํ(Task Queue)๋กœ ์ด๋™: ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์ฆ‰์‹œ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ ๋ช…๋‹จ(Task Queue)์˜ ๋งจ ๋’ค๋กœ ๋ฐ€๋ ค๋‚ฉ๋‹ˆ๋‹ค.
  2. ๋ Œ๋”๋ง ์šฐ์„ ๊ถŒ ๋ถ€์—ฌ: ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋Œ€์‹  ํ™”๋ฉด ๊ทธ๋ฆฌ๊ธฐ(Rendering) ์ž‘์—…์„ ๋จผ์ € ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ฑ๋Šฅ ์ง€ํ‘œ ๊ฐœ์„ : ํ™”๋ฉด์ด ๋นจ๋ฆฌ ๋œจ๋‹ˆ FCP, LCP ์ ์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ณ , ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋น„์›Œ์ง€๋‹ˆ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐ˜์‘ํ•˜๋Š” TTI ์ ์ˆ˜๋„ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ตœ์ ํ™” ๋ฐฉ์‹๊ณผ์˜ ๋น„๊ต

์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ๋ชฉํ‘œ๋Š” HTML ํŒŒ์‹ฑ์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ , ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋Šฆ๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ์ง€์—ฐ ๋กœ๋”ฉ๊ณผ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™” ๋ฐฉ์‹์„ ๋น„๊ตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ์‹ HTML ํŒŒ์‹ฑ ์ฐจ๋‹จ ์‹คํ–‰ ์‹œ์  ์ฃผ์š” ์ด์ 
setTimeout(..., 0) ์ฐจ๋‹จ ์•ˆ ํ•จ (๋น„๋™๊ธฐ) DOMContentLoaded ํ›„, ํ˜„์žฌ ์ด๋ฒคํŠธ ๋ฃจํ”„ ์ž‘์—… ์™„๋ฃŒ ์งํ›„ ๊ธฐ์กด ์ธ๋ผ์ธ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ง€์—ฐ์‹œ์ผœ LCP/TTI ๊ฐœ์„ .
script defer ์ฐจ๋‹จ ์•ˆ ํ•จ (๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ) DOMContentLoaded ๋ฐœ์ƒ ์ง์ „ (์ˆœ์„œ ๋ณด์žฅ) ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ์˜ ์ˆœ์„œ ๋ณด์žฅ ๋ฐ ํŒŒ์‹ฑ ์™„๋ฃŒ ์ง์ „ ์‹คํ–‰.
script async ์ฐจ๋‹จ ์•ˆ ํ•จ (๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ) ๋‹ค์šด๋กœ๋“œ ์™„๋ฃŒ ์ฆ‰์‹œ (์ˆœ์„œ ๋น„๋ณด์žฅ) ๊ฐ€์žฅ ๋น ๋ฅธ ์‹คํ–‰์ด ํ•„์š”ํ•  ๋•Œ (์˜ˆ: ๊ด‘๊ณ , ์• ๋„๋ฆฌํ‹ฑ์Šค).

์–ธ์ œ setTimeout(..., 0)์ด ์ตœ์ ์˜ ์„ ํƒ์ธ๊ฐ€?

์‹ค๋ฌด ๊ฒฝํ—˜์ƒ, ๋‹ค์Œ ์กฐ๊ฑด์—์„œ๋Š” setTimeout(..., 0)์ด ๋‹ค๋ฅธ ์–ด๋–ค ๋ฐฉ์‹๋ณด๋‹ค ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ธŒ๋ผ์šฐ์ € ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ ์œ ์œจ ๋‚ฎ์ถ”๊ธฐ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

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

ํ•ต์‹ฌ ์š”์•ฝ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

Core Web Vitals ์„ฑ๋Šฅ ๊ฐœ์„  ์‹ค๋ฌด ํŒ์˜ ํ•ต์‹ฌ ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™” ์šฐ์„ ์ˆœ์œ„

  1. ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฌด์กฐ๊ฑด defer ์‚ฌ์šฉ
  2. ๋ถ„์„/๊ด‘๊ณ  ์Šคํฌ๋ฆฝํŠธ๋Š” async ํ™œ์šฉ
  3. ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ Œ๋”๋ง ํ›„ ์‹คํ–‰์ด ํ•„์š”ํ•œ ๋กœ์ง์€ setTimeout(..., 0)

โš  ์ฃผ์˜ํ•  ์  (FOUC ๋ฐฉ์ง€)

์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋”๋‚˜ ์ƒ๋‹จ ๋ฉ”๋‰ด์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ”๋กœ ๋ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ฝ”๋“œ์— setTimeout์„ ์“ฐ๋ฉด ํ™”๋ฉด์ด ๊นœ๋นก๊ฑฐ๋ฆฌ๋Š” FOUC(Flash of Unstyled Content) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹œ๊ฐ์  ์š”์†Œ๋Š” ๊ฐ€๊ธ‰์  ์ง€์—ฐ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

setTimeout(0)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด LCP ์ ์ˆ˜๊ฐ€ ์ข‹์•„์ง€๋‚˜์š”?

์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์œ ํ•˜์—ฌ ๋ Œ๋”๋ง์„ ๋ฐฉํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ํ™•์‹คํžˆ LCP ๊ฐœ์„  ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€๊ฐ€ ๋Šฆ๊ฒŒ ๋œจ๋Š” ์›์ธ์ด ์„œ๋ฒ„ ์‘๋‹ต ์†๋„๋‚˜ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ž์ฒด์— ์žˆ๋‹ค๋ฉด ํšจ๊ณผ๊ฐ€ ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

setTimeout(0)๊ณผ defer์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

defer๋Š” ์™ธ๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ HTML ํŒŒ์‹ฑ๊ณผ ๋ณ‘๋ ฌ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ๋’ค ํŒŒ์‹ฑ ์™„๋ฃŒ ์‹œ์ ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด setTimeout(0)์€ ์ด๋ฏธ HTML์— ํฌํ•จ๋œ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ดํ›„๋กœ ๋ฏธ๋ฃฐ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ๊ด‘๊ณ  ์Šคํฌ๋ฆฝํŠธ์— ์ด ๋ฐฉ์‹์„ ์ ์šฉํ•ด๋„ ๋˜๋‚˜์š”?

๋„ค, ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ์˜ ํ•˜๋‹จ ๊ด‘๊ณ ๋‚˜ ์‚ฌ์ด๋“œ๋ฐ” ์œ„์ ฏ ์Šคํฌ๋ฆฝํŠธ๋ฅผ setTimeout(0)์œผ๋กœ ๊ฐ์‹ธ๋ฉด ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ๋†’์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ณ  ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™” ์ ์ˆ˜๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผํ•˜๋Š” ๋ฐฉ์‹์˜ ์ฐจ์ด๊ฐ€ ํ•œ ๋— ์ฐจ์ด์˜ ์ ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค

setTimeout(..., 0)์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ๋Šฆ๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ผผ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ๋ถ„๋ฐฐ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ์ „๋žต์  ์„ ํƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ธ”๋กœ๊ทธ ํ•˜๋‹จ์— ๋“ค์–ด์žˆ๋Š” ๋ฌด๊ฑฐ์šด ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ๋“ค์„ setTimeout์œผ๋กœ ๊ฐ์‹ธ๋ณด์„ธ์š”. ๊ตฌ๊ธ€ ํŽ˜์ด์ง€์Šคํ”ผ๋“œ ์ธ์‚ฌ์ดํŠธ ์ ์ˆ˜๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

'SEO > seo-tips' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ธ”๋กœ๊ทธ ๊ธ€ ๋‚ ์งœ ์ˆจ๊ธฐ๊ธฐ ์ „๋žต, ๊ฒ€์ƒ‰ ๋…ธ์ถœ๊ณผ CTR์€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์งˆ๊นŒ  (1) 2025.12.25
๋ธ”๋กœ๊ทธ ํƒœ๊ทธ SEO ํƒœ๊ทธ ๊ฐœ์ˆ˜, ๋ช‡ ๊ฐœ๊ฐ€ ์ ๋‹นํ• ๊นŒ? ๋ธ”๋กœ๊ทธ ์ €ํ’ˆ์งˆ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํƒœ๊ทธ ์ •๋ฆฌ  (1) 2025.12.24
๊ตฌ๊ธ€ ๋ธ”๋กœ๊ทธ(Blogger) ํ•ด์‹œ ํƒœ๊ทธ ์ ์šฉ ๋ฐฉ๋ฒ•: ํƒœ๊ทธ์ฒ˜๋Ÿผ ์“ฐ๋ฉด ๋งํ•˜๋Š” ์ด์œ   (4) 2025.12.24
๋„ค์ด๋ฒ„์™€ ๊ตฌ๊ธ€ ๋ธ”๋กœ๊ทธ ๋™์‹œ ์šด์˜, ์ค‘๋ณต ๋ฌธ์„œ ํŒจ๋„ํ‹ฐ ์—†์ด ํ•˜๋Š” ๋ฒ•!  (0) 2025.12.21
AI ํ•™์Šต์€ ์ฐจ๋‹จํ•˜๊ณ  ๊ฒ€์ƒ‰ ๋…ธ์ถœ์€ ์œ ์ง€ํ•˜๋Š” ์ฝ˜ํ…์ธ  ๋ณดํ˜ธ ๋ฐฉ๋ฒ•  (0) 2025.12.21
๊ตฌ๊ธ€ ๋ธ”๋กœ๊ทธ(Blogger) ์ƒ‰์ธ ์ž˜๋˜๊ฒŒ ํ•˜๋Š” ๋น„๋ฒ• ๊ณต๊ฐœ  (0) 2025.12.20
๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์•ˆ๋˜๋Š” ์›์ธ ๋ถ„์„๊ณผ ๋ชจ๋ฐ”์ผ URL ์šฐํšŒ ๋ฐฉ๋ฒ•  (0) 2025.12.18