https://web.dev/articles/dom-size-and-interactivity

 

ํฐ DOM ํฌ๊ธฐ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ๊ณผ ์ด์— ๋Œ€ํ•ด ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ์น˜  |  Articles  |  web.dev

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

web.dev



๐Ÿ—ฃ๏ธ ํฌ๊ธฐ๊ฐ€ ํฐ ๋”์€ ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒํ˜ธ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ผ์น  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ํŽ˜์ด์ง€์— DOM(Document object model)์ด ์žˆ๋‹ค๋Š” ์ ์€ ๋ช…๋ฐฑํ•œ ์‚ฌ์‹ค์ด๋‹ค.

DOM์€ ํŽ˜์ด์ง€์˜ HTML ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์— ์ ‘๊ทผํ•˜๋„๋ก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ CSS๋ฅผ ๋ณด๋‚ธ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋Š” DOM์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ์— ์˜ํ–ฅ์„ ์ค€๋‹ค๋Š” ์ ์ด๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ DOM์ด ํด์ˆ˜๋ก ์ฒ˜์Œ์— ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  ๋‚˜์ค‘์— ํŽ˜์ด์ง€ ๋ผ์ดํ”„์‚ฌ์ดํด์—์„œ ๋ Œ๋”๋ง์„ ์—…๋ฐ์ดํŠธํ•˜๋Š”๋ฐ์— ๋” ๋งŽ์€ ๋น„์šฉ์ด ๋“ ๋‹ค.

์ด๋Š” DOM์„ ์ˆ˜์ •ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ƒํ˜ธ ์ž‘์šฉ์ด ๋งŽ์€ ํŽ˜์ด์ง€์—์„œ ๋น ๋ฅธ ์‘๋‹ต์—์„œ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ๋งŽ์€ ๋ ˆ์ด์•„์›ƒ ์ž‘์—…์„ ๋‹ค๋ฃฐ ๋•Œ ํฐ DOM์ด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ ˆ์ด์•„์›ƒ ์ž‘์—…์€ ํŽ˜์ด์ง€์˜ INP(Interaction to Next Page)์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ๋งŒ์•ฝ ํŽ˜์ด์ง€๊ฐ€ ์œ ์ € ์ƒํ˜ธ์ž‘์šฉ์— ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด DOM์˜ ํฌ๊ธฐ๋ฅผ ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

โ—พ๏ธ ์–ธ์ œ ํŽ˜์ด์ง€์˜ DOM์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ๊นŒ?

 

A: ํ•ต์‹ฌ ์šฉ์–ด: DOM ์š”์†Œ์™€ DOM ๋…ธ๋“œ์˜ ์ฐจ์ด์ ์„ ์•„๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค. DOM ์š”์†Œ๋Š” DOM ํŠธ๋ฆฌ์˜ ํŠน์ • HTML ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DOM ๋…ธ๋“œ๋Š” DOM ์š”์†Œ์˜ ์šฉ์–ด์™€ ์ค‘๋ณต๋˜๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–์ง€๋งŒ ๊ทธ๊ฒƒ์˜ ์ •์˜๋Š” ์ฃผ์„, ๊ณต๋ฐฑ ๋ฐ ํ…์ŠคํŠธ๋กœ ํ™•์žฅ๋œ๋‹ค. Lighthouse์˜ DOM ํฌ๊ธฐ ์ธก์ •์€ DOM ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ฐ€๋Šฅํ•  ๋•Œ๋งˆ๋‹ค DOM ๋…ธ๋“œ๋ณด๋‹ค DOM ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•  ๊ฒƒ์ด๋‹ค.


Lighthouse์— ๋”ฐ๋ฅด๋ฉด ํŽ˜์ด์ง€์˜ DOM์‚ฌ์ด์ฆˆ๊ฐ€ 1,400 ๋…ธ๋“œ๋ฅผ ๋„˜์„๋•Œ ๊ณผ๋„ํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค. Lighthouse๋Š” DOM์ด 800๋…ธ๋“œ๋ฅผ ๋„˜์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋‚ด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

๋‹ค์Œ HTML์„ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ๋‹ค:

<ul>
  <li>List item one.</li>
  <li>List item two.</li>
  <li>List item three.</li>
</ul>


์œ„ ์ฝ”๋“œ์—๋Š” 4๊ฐœ์˜ DOM ์š”์†Œ: <ul> ์š”์†Œ์™€ 3๊ฐœ์˜ ํ•˜์œ„ ์š”์†Œ <li>๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์›น ํŽ˜์ด์ง€์—๋Š” ํ™•์‹คํžˆ ์ด๋ณด๋‹ค ๋” ๋งŽ์€ ๋…ธ๋“œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— DOM ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€์˜ DOM์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“  ํ›„ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ์ „๋žต๋ฟ๋งŒ ์•„๋‹ˆ๋ผ DOM ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

โ—พ๏ธํฌ๊ธฐ๊ฐ€ ํฐ DOM์ด ์–ด๋–ป๊ฒŒ ํŽ˜์ด์ง€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ?


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

2. DOM์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ ์‚ฝ์ž… ํ˜น์€ ์‚ญ์ œ ๋˜๋Š” DOM ๋‚ด์šฉ๊ณผ ์Šคํƒ€์ผ ์ˆ˜์ •๊ณผ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚˜๋ฉด ์ด ์—…๋ฐ์ดํŠธ๋“ค์„ ๋ Œ๋”๋งํ•˜๋Š” ์ž‘์—…์— ๋งค์šฐ ๋งŽ์€ ๋น„์šฉ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค. CSS ์…€๋ ‰ํ„ฐ์˜ ๊ตฌ์ฒด์„ฑ ์ฆ๊ฐ€๋Š” ํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ ๋ Œ๋”๋ง๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ HTML ์š”์†Œ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ์˜ ๊ฒฐ๊ณผ๋กœ DOM์— ์‚ฝ์ž…๋  ๋•Œ ๋ Œ๋”๋ง ์ž‘์—…์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค. 
 
3. JavaScript๊ฐ€ DOM์„ ์ฟผ๋ฆฌํ•  ๋•Œ DOM ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด document.querySelectorAll์„ ํ˜ธ์ถœํ•ด ๋ชจ๋“  <div>์„ ํŽ˜์ด์ง€์—์„œ ์„ ํƒํ•  ๋•Œ,  ๋งŽ์€ ์ˆ˜์˜ DOM์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋น„์šฉ์ด ์ƒ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
 

Chorome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์•ˆ์— ์žˆ๋Š” ํ”„๋กœํŒŒ์ผ๋Ÿฌ์— ํ‘œ์‹œ๋œ ๊ธด ์ž‘์—…์ด๋‹ค. ํ‘œ์‹œ๋œ ๊ธด ์ž‘์—…์€ JavaScript๋ฅผ ํ†ตํ•ด DOM ์š”์†Œ๋ฅผ ๋Œ€๊ทœ๋ชจ DOM์— ์‚ฝ์ž…ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ๋‹ค.

 
๋ชจ๋‘ ์ƒํ˜ธ ์ž‘์šฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€๋งŒ ์œ„ ๋ชฉ๋ก ์ค‘ ๋‘ ๋ฒˆ์งธ ํ•ญ๋ชฉ์ด ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค. ์ƒํ˜ธ์ž‘์šฉ๋“ค์— ์˜ํ•ด DOM์ด ๋ณ€๊ฒฝ๋˜๋ฉด ํŽ˜์ด์ง€์˜ ์ข‹์ง€ ์•Š์€ INP์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ด ์‹œ์ž‘๋  ์ˆ˜๋„ ์žˆ๋‹ค.

โ—พ๏ธ์–ด๋–ป๊ฒŒ DOM์‚ฌ์ด์ฆˆ๋ฅผ ์ธก์ •ํ• ๊นŒ?

 

๋‹น์‹ ์€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ DOM์‚ฌ์ด์ฆˆ๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ Lighthouse๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. Lighthouse์—์„œ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ํŽ˜์ด์ง€์˜ DOM์— ๋Œ€ํ•œ ํ†ต๊ณ„๊ฐ€ 'Diagnostics' ์ œ๋ชฉ ์•„๋ž˜ 'Avoid an excessive DOM size(๊ณผ๋„ํ•œ DOM์‚ฌ์ด์ฆˆ ํ”ผํ•˜๊ธฐ)' ํ•ญ๋ชฉ์— ํ‘œ์‹œ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์—๋Š” DOM ์š”์†Œ์˜ ์ด ๊ฐœ์ˆ˜, ๊ฐ€์žฅ ๋งŽ์€ ํ•˜์œ„(children) ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” DOM ์š”์†Œ ๋ฐ ๊ฐ€์žฅ ๊นŠ์€ DOM ์š”์†Œ ๋˜ํ•œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ JavaScript ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. DOM์˜ ์ด HTML ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์–ป์œผ๋ ค๋ฉด ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์ฝ˜์†”์—์„œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค:

  document.querySelectorAll('*').length;
  
๋ฉ”๋ชจ: ์œ„์˜ ์ฝ”๋“œ์—๋Š” DOM์˜ HTML ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋งŒ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. DOM์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.



DOM ํฌ๊ธฐ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๋ ค๋ฉด ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ DOM ํฌ๊ธฐ์™€ ํ•จ๊ป˜ ๋ ˆ์ด์•„์›ƒ ๋ฐ ์Šคํƒ€์ผ ์ž‘์—…(๊ธฐํƒ€ ์„ฑ๋Šฅ ์ธก๋ฉด)๋“ฑ์„ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

Chrome DevTools์˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ. ์—ฌ๊ธฐ์„œ๋Š” ํŽ˜์ด์ง€์˜ ํ˜„์žฌ DOM ๋…ธ๋“œ ์ˆ˜๊ฐ€ ์ดˆ๋‹น ์ˆ˜ํ–‰๋˜๋Š” ๋ ˆ์ด์•„์›ƒ ์ž‘์—…, ์Šคํƒ€์ผ ์žฌ๊ณ„์‚ฐ๊ณผ ํ•จ๊ป˜ ์ฐจํŠธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

 
DOM์˜ ํฌ๊ธฐ๊ฐ€ Lighthouse DOM ํฌ๊ธฐ์˜ ๊ฒฝ๊ณ  ๊ฐ’์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ๋‹จ๊ณ„๋Š” DOM์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ์›น ์‚ฌ์ดํŠธ์˜ INP๊ฐ€ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์— ์‘๋‹ตํ•˜๋Š” ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

โ—พ๏ธ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” DOM ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ  ์ธก์ •ํ• ๊นŒ?

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

์Šคํƒ€์ผ ์žฌ๊ณ„์‚ฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋กœ DOM์—์„œ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ด€์ฐฐํ•œ๋‹ค. ์ƒํ˜ธ์ž‘์šฉ ํŠธ๋ž™์— ์žˆ๋Š” ์Œ์˜์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์€ ์ƒํ˜ธ ์ž‘์šฉ ์ง€์† ์‹œ๊ฐ„ ์ค‘ INP ์ง€์ •๋œ "good" ๊ฐ’์ธ 200๋ฐ€๋ฆฌ์ดˆ ์ด์ƒ์˜ ๋ถ€๋ถ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

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

โ—พ๏ธ์–ด๋–ป๊ฒŒ DOM ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ๊นŒ?

๋ถˆํ•„์š”ํ•œ ๋งˆํฌ์—…์„ ์œ„ํ•ด ์›น์‚ฌ์ดํŠธ์˜ HTML์„ ๊ฐ์‚ฌํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ DOM ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•์€ DOM ๊นŠ์ด๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค. DOM์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊นŠ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ ์ค‘์˜ ํ•˜๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์š”์†Œ ํƒญ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งˆํฌ์—…์ด ๋ณด์ด๋Š” ์‹ ํ˜ธ์ด๋‹ค.
 

    <div>
      <div>
        <div>
          <div>
            <!-- Contents -->
          </div>
        </div>
      </div>
    </div>

 
์ด์™€ ๊ฐ™์€ ํŒจํ„ด์„ ๋ณด๋ฉด ์•„๋งˆ๋„ DOM ๊ตฌ์กฐ๋ฅผ ํ‰ํ‰ํ•˜๊ฒŒ ํ•˜์—ฌ ํŒจํ„ด์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด DOM ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ  ํŽ˜์ด์ง€ ์Šคํƒ€์ผ์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
 
DOM์˜ ๊นŠ์ด๋Š” ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฆ์ƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ํŠนํžˆ JSX์— ์˜์กดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ์š”์†Œ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์— ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ค‘์ฒฉํ•ด์•ผ ํ•œ๋‹ค.
 
๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” fragment๋ผ๊ณ  ์•Œ๋ ค์ง„ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ nesting ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fragment๋ฅผ ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด์— ๊ตญํ•œ๋˜์ง€๋Š” ์•Š๋‹ค):
 


์„ ํƒํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์— fragments์„ ์‚ฌ์šฉํ•˜๋ฉด DOM ๊นŠ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. DOM ๊ตฌ์กฐ๋ฅผ ํ‰ํ‰ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์Šคํƒ€์ผ๋ง์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ ์ด ๊ฑฑ์ •๋œ๋‹ค๋ฉด ํ”Œ๋ ‰์Šค๋ฐ•์Šค(flexbox) ๋˜๋Š” ๊ทธ๋ฆฌ๋“œ(grid)์™€ ๊ฐ™์€ ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ(๋ฐ ๋” ๋น ๋ฅธ) ๋ ˆ์ด์•„์›ƒ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

โ—พ๏ธ๊ธฐํƒ€ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ „๋žต

 

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

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

๋งŒ์•ฝ ํŽ˜์ด์ง€ ์ดˆ๊ธฐ ๋กœ๋“œ์‹œ์˜ ์ˆจ๊ฒจ์ง„ ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๋ฉด ๋ฆฌ๋ Œ๋”๋ง ์ž‘์—…์„ ์œ ๋ฐœํ•˜๋Š” ๋‹ค๋ฅธ ์ƒํ˜ธ์ž‘์šฉ๋“ค์˜ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์ƒํ˜ธ ์ž‘์šฉ์ด DOM์— ์ถ”๊ฐ€๋จ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ „๋ฐ˜์— ๊ฑธ์ณ DOM์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ ๋ Œ๋”๋ง ์ž‘์—…์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ DOM์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณ ์œ ํ•œ ์ ˆ์ถฉ์ ์ด ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ํŽ˜์ด์ง€์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” HTML์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ์ค‘๊ฐ„ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์€ INP์— ํฌํ•จ๋˜์ง€ ์•Š์ง€๋งŒ ์ธ์ง€๋œ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ค‘์ž„์„ ํ‘œ์‹œํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๋„๋ก ํ•œ๋‹ค.

โ—พ๏ธCSS ์…€๋ ‰ํ„ฐ์˜ ๋ณต์žก์„ฑ ์ œํ•œ


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

๋” ์•Œ์•„๋ณด๊ธฐ: ์Šคํƒ€์ผ ๊ณ„์‚ฐ์˜ ๋ณต์žก์„ฑ๊ณผ ์Šค์ฝ”ํ”„ ์ค„์ด๊ธฐ


โ—พ๏ธ content-visibility ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

CSS๋Š” ํ™”๋ฉด ๋ฐ– DOM์š”์†Œ๋ฅผ ๋Š๊ธ‹ํ•˜๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ธ content-visibility ํ”„๋กœํผํ‹ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์š”์†Œ๋“ค์ด ๋ทฐํฌํŠธ์— ์ ‘๊ทผํ•˜๋ฉด ํ•„์š”์— ๋”ฐ๋ผ ๋ Œ๋”๋ง๋œ๋‹ค. content-visibility์˜ ์ด์ ์€ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์‹œ ์ƒ๋‹นํ•œ ์–‘์˜ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ค„์—ฌ์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ํŽ˜์ด์ง€ DOM์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์˜คํ”„์Šคํฌ๋ฆฐ ์š”์†Œ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 ๋” ์•Œ์•„๋ณด๊ธฐ: content-visibility: ๋ Œ๋”๋ง ํผํฌ๋จผ์Šค๋ฅผ ์˜ฌ๋ ค์ฃผ๋Š” ์ƒˆ๋กœ์šด CSS ํ”„๋กœํผํ‹ฐ

 

 

๐ŸŒŸ  ๊ฒฐ๋ก 

DOM ์‚ฌ์ด์ฆˆ๋ฅผ ํ•„์š”ํ•œ๊ฒƒ์œผ๋กœ๋งŒ ์ค„์ด๋Š” ๊ฒƒ์ด ๋‹น์‹ ์˜ ์›น์‚ฌ์ดํŠธ์˜ INP๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด DOM์ด ์—…๋ฐ์ดํŠธ๋  ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ ˆ์ด์•„์›ƒ ๋ฐ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹น์‹ ์ด DOM ํฌ๊ธฐ๋ฅผ ์˜๋ฏธ ์žˆ๊ฒŒ ์ค„์ผ ์ˆ˜ ์—†๋”๋ผ๋„ ๋ Œ๋”๋ง ์ž‘์—…์„ DOM ํ•˜์œ„ ํŠธ๋ฆฌ๋กœ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” CSS containment ๋ฐ content-visibility ํ”„๋กœํผํ‹ฐ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์ˆ ์ด ์žˆ๋‹ค.

 

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

+ Recent posts