# [[JavaScript Optimization]] ## ๐Ÿ“Œ Brief Summary JavaScript Optimization(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™”)์€ ์›น์‚ฌ์ดํŠธ์˜ ๋กœ๋”ฉ ์†๋„, ์ƒํ˜ธ์ž‘์šฉ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์ „๋ฐ˜์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์‹คํ–‰ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ์›น ์„ฑ๋Šฅ ๊ฐœ์„  ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ, ์ฝ”๋“œ ๋ถ„ํ• , ์‹คํ–‰ ์ง€์—ฐ, ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ฐจ๋‹จ ๋ฐฉ์ง€ ๋“ฑ์˜ ์ „๋žต์„ ํ™œ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ  Core Web Vitals์˜ ํ•ต์‹ฌ ์ง€ํ‘œ์ธ INP(Interaction to Next Paint)๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค [1-3]. ## ๐Ÿ“– Core Content * **๋กœ๋”ฉ ๋ฐ ํŒŒ์‹ฑ ์ตœ์ ํ™” ๋ฐฉ์•ˆ:** * **์ฝ”๋“œ ์ถ•์†Œ ๋ฐ ์ œ๊ฑฐ:** ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” Minify(์ถ•์†Œ) ์ž‘์—…์„ ํ†ตํ•ด ์ „์ฒด ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [4]. ๋˜ํ•œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํŠธ๋ฆฌ ์‰์ดํ‚น(Tree shaking) ๋ฐ ๋ฐ๋“œ ์ฝ”๋“œ ์ œ๊ฑฐ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **๋น„๋™๊ธฐ ๋กœ๋”ฉ ๋ฐ ์ง€์—ฐ ๋กœ๋”ฉ:** ๋ Œ๋”๋ง์„ ์ฐจ๋‹จํ•˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž์›์€ `async` ๋˜๋Š” `defer` ์†์„ฑ์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋”ฉ์„ ์ง€์—ฐ์‹œํ‚ด์œผ๋กœ์จ ๋ฉ”์ธ ์ฝ˜ํ…์ธ ๊ฐ€ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋ Œ๋”๋ง๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค [4, 7]. * **์ฝ”๋“œ ๋ถ„ํ• (Code Splitting):** ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋†€๋ฆฌ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค์„ ๋ผ์šฐํŠธ๋‚˜ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด(Chunking), ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋“œ์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋งŒ ๋จผ์ € ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)ํ•˜๋Š” ๋ฐฉ์‹์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [3, 8-11]. * **์‹คํ–‰ ์‹œ๊ฐ„ ๋ฐ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ตœ์ ํ™” (INP ๊ฐœ์„ ):** * **๊ธด ์ž‘์—… ์ชผ๊ฐœ๊ธฐ(Breaking up long tasks):** 50ms ์ด์ƒ ๊ฑธ๋ฆฌ๋Š” ๋ฌด๊ฑฐ์šด ๋™๊ธฐ์  ์ฒ˜๋ฆฌ ์ž‘์—…์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ 50ms ๋ฏธ๋งŒ์˜ ์ž‘์€ ์ฒญํฌ๋กœ ์ชผ๊ฐœ์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ค‘๊ฐ„์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด๋‚˜ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์–‘๋ณด(Yield)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 12, 13]. * **์›น ์›Œ์ปค(Web Workers) ํ™œ์šฉ:** ๋ณต์žกํ•œ ๊ณ„์‚ฐ์ด๋‚˜ CPU ์ง‘์•ฝ์ ์ธ ์ž‘์—…์€ ์›น ์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ์˜คํ”„๋กœ๋“œ(Offload)ํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์˜ ์‘๋‹ต์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [1, 14, 15]. * **์œ ํœด ์‹œ๊ฐ„ ํ™œ์šฉ:** ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์€ ์ž‘์—…์€ `requestIdleCallback`์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์œ ํœด ์ƒํƒœ์ผ ๋•Œ ์‹คํ–‰๋˜๋„๋ก ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค [16, 17]. * **์ด๋ฒคํŠธ ๋ฐ DOM ๋ Œ๋”๋ง ์ตœ์ ํ™”:** * **์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์ตœ์ ํ™”:** ์Šคํฌ๋กค์ด๋‚˜ ๊ฒ€์ƒ‰ ๋“ฑ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—๋Š” ๋””๋ฐ”์šด์Šค(Debounce)์™€ ์Šค๋กœํ‹€(Throttle) ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต ์‹คํ–‰์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค [1, 18, 19]. * **DOM ์กฐ์ž‘ ์ตœ์†Œํ™”:** ์žฆ์€ ๋ ˆ์ด์•„์›ƒ ์žฌ๊ณ„์‚ฐ์„ ์œ ๋ฐœํ•˜๋Š” ๋ฌด๊ฑฐ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ณผ๋„ํ•œ DOM ์กฐ์ž‘์„ ์ค„์ด๊ณ , ๊ฐ€์ƒ ๋ Œ๋”๋ง(Virtual rendering)์ด๋‚˜ ์ผ๊ด„ ์—…๋ฐ์ดํŠธ(Batch updates) ๊ฐ™์€ ํšจ์œจ์ ์ธ ์ฝ”๋”ฉ ๊ธฐ์ˆ ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [1, 14, 20]. * **์„œ๋“œํŒŒํ‹ฐ ์Šคํฌ๋ฆฝํŠธ ๊ด€๋ฆฌ:** * ๋ถ„์„, ๊ด‘๊ณ , ์ฑ—๋ด‡ ๋“ฑ ํƒ€์‚ฌ ์Šคํฌ๋ฆฝํŠธ๋Š” INP ์ €ํ•˜์˜ ์ฃผ์š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [21]. ์ด๋Ÿฌํ•œ ์Šคํฌ๋ฆฝํŠธ๋Š” ํŽ˜์ด์ง€ ๋กœ๋“œ ์ดํ›„๋กœ ๋กœ๋”ฉ์„ ์ง€์—ฐ์‹œํ‚ค๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ ์กฐ๊ฑด๋ถ€๋กœ ๋กœ๋“œ๋˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6-8]. Chrome DevTools์˜ Coverage ํƒญ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ๋น„์ค‘์„ ์‹๋ณ„ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [22]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Core Web Vitals]], [[Interaction to Next Paint (INP)]], [[Code Splitting]], [[Lazy Loading]] - **Projects/Contexts:** [[Web Performance Optimization]], [[Frontend Performance Checklist]] - **Contradictions/Notes:** ์†Œ์Šค ์ „๋ฐ˜์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™”๋Š” ํ˜„๋Œ€ ์›น์‚ฌ์ดํŠธ ์•„ํ‚คํ…์ฒ˜์˜ ํ•„์ˆ˜ ์š”์†Œ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ, ํŠนํžˆ 2025๋…„ Google Core Web Vitals์˜ ์ง€ํ‘œ๊ฐ€ FID์—์„œ INP๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ฐจ๋‹จ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…(Web Workers, ์ž‘์—… ๋ถ„ํ•  ๋“ฑ)์˜ ์ค‘์š”์„ฑ์ด ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ•์กฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [1, 2, 23, 24]. --- *Last updated: 2026-04-26*