λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

WEB

[ WEB ] μ›Ήν”„λ‘ νŠΈμ—”λ“œμ—μ„œ μ•± μ„±λŠ₯ μ΅œμ ν™” ν•˜λŠ” λ‹€μ–‘ν•œ 방법

 

 

 

μ›Ή ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯을 μ΅œμ ν™”ν•  수 μžˆλŠ” 방법은 무엇이 μžˆμ„κΉŒ?

크게 λ‘œλ”© μ„±λŠ₯ μ΅œμ ν™”μ™€ λ Œλ”λ§ μ„±λŠ₯ μ΅œμ ν™” μ΄λ ‡κ²Œ 2κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλŠ” 것 κ°™λ‹€. 

 

 


 

 

λ‘œλ”© μ„±λŠ₯ μ΅œμ ν™”


μ›Ήν”„λ‘ νŠΈμ—μ„œ λ‘œλ”© μ„±λŠ₯을 μ΅œμ ν™”ν•˜λŠ” 방법은 λ‹€μ–‘ν•˜λ‹€.

μš°μ„  λ¦¬μ†ŒμŠ€ μ΅œμ†Œν™” 및 압좕을 ν†΅ν•œ μ‚¬μ΄μ¦ˆ κ°μ†Œ(JavaScript, CSS, HTML 파일 μ••μΆ•, 이미지 μ΅œμ ν™”-크기 μ‘°μ •, μ••μΆ•, webPμ‚¬μš© λ“±)λ₯Ό 톡해 μ•±μ˜ λ²ˆλ“€ μ‚¬μ΄μ¦ˆλ₯Ό 쀄일 μˆ˜λ„ 있고, 캐싱 μ „λž΅μ„ κ΅¬ν•œν•˜μ—¬ λΆˆν•„μš”ν•œ 데이터 μΆ”κ°€ μš”μ²­λ“±μ„ 방지할 μˆ˜λ„ μžˆλ‹€. 캐싱 μ „λž΅μœΌλ‘œλŠ” λΈŒλΌμš°μ € 캐싱 섀정을 μ΅œμ ν™”ν•˜κ±°λ‚˜, μ„œλΉ„μŠ€ μ›Œμ»€λ₯Ό μ΄μš©ν•œ μ˜€ν”„λΌμΈ 캐싱, CDN을 ν†΅ν•œ λ¦¬μ†ŒμŠ€ 캐싱등이 여기에 μ†ν•œλ‹€. SSR, SSG 등을 μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ JavaScript μ‹€ν–‰ λΆ€ν•˜λ₯Ό κ°μ†Œμ‹œμΌœ 초기 λ‘œλ”©μ‹œκ°„μ„ λ‹¨μΆ•μ‹œν‚€λŠ” 방법도 μžˆλ‹€.

 

큰 λ²ˆλ“€μ„ μž‘μ€ 청크둜 λ‚˜λˆ„μ–΄ ν•„μš”ν•  λ•Œλ§Œ λ‘œλ“œν•˜λ„λ‘ μ½”λ“œ λΆ„ν•  및 지연 λ‘œλ”©μ„ 톡해 λ‘œλ”© 속도λ₯Ό κ°œμ„ ν• μˆ˜ μžˆλ‹€.

예λ₯Ό λ“€μ–΄ JavaScript νŒŒμΌμ— async/defer 속성 μ‚¬μš©ν•˜μ—¬ ν•„μš”ν•œ μ½”λ“œλ₯Ό λ¨Όμ € λ‘œλ”©ν•˜κ±°λ‚˜, Lazy Loading, Dynamic Import, Suspense 등을 μ΄μš©ν•˜μ—¬ ν•„μš”ν•  λ•Œ λ™μ μœΌλ‘œ import ν•˜λŠ” 방법도 μžˆλ‹€. λ˜ν•œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ½”λ“œλ‚˜ λΆˆν•„μš”ν•œ 참쑰등을 μ œκ±°ν•˜μ—¬ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ μ€„μ΄λŠ” 방법, μ½”λ“œλ₯Ό λΆ„ν• ν•˜μ—¬(React의 κ²½μš°λŠ” μ»΄ν¬λ„ŒνŠΈ λΆ„ν•  λ“±) μž‘μ—…ν•˜λŠ” 것도 초기 λ‘œλ”©μ†λ„λ₯Ό μ€„μ΄λŠ” 방법 쀑 ν•˜λ‚˜μ΄λ‹€.  

 

κ·Έ 외에 preloading 및 prefetch 등을 μ΄μš©ν•˜μ—¬ μ€‘μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό 미리 κ°€μ Έμ˜€κ±°λ‚˜, DB query 및, API 응닡을 μ΅œμ ν™”ν•˜λŠ” 방법, HTTP/2 λ˜λŠ” HTTP/3λ₯Ό μ‚¬μš©ν•˜μ—¬ 닀쀑 μš”μ²­ 처리λ₯Ό ν•˜λŠ” 방법도 λ‘œλ”© μ„±λŠ₯ ν–₯상에 도움이 될 수 μžˆλ‹€.

 

 

 

 

 

 

 

λ Œλ”λ§ μ„±λŠ₯ μ΅œμ ν™”

 

μ›Ήν”„λ‘ νŠΈμ—μ„œ λ Œλ”λ§ μ„±λŠ₯을 μ΅œμ ν™”ν•˜λŠ” 방법은 가상 DOM(VDOM)을 μ‚¬μš©ν•˜μ—¬ μ‹€μ œ DOMμ‘°μž‘μ„ μ΅œμ†Œν™”ν•˜λŠ” 방법이 있으며, μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§μ„ μ΅œμ ν™”ν•˜κΈ° μœ„ν•΄ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ ν™œμš©ν•˜λŠ” 방법도 μžˆλ‹€. CSSμ—μ„œλŠ” will-change 속성을 μ‚¬μš©ν•˜μ—¬, 변경될 속성에 λŒ€ν•΄ 힌트λ₯Ό μ œκ³΅ν•˜μ—¬ λΈŒλΌμš°μ €κ°€ 미리 μ μ ˆν•˜κ²Œ μ΅œμ ν™”ν•  수 μžˆλ‹€.

 

λ Œλ”λ§ μ„±λŠ₯을 μ΅œμ ν™” ν•˜κΈ°μœ„ν•΄μ„œλŠ” λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ 방지해야 ν•˜λŠ”λ°, 그러기 μœ„ν•΄μ„œλŠ” μ»΄ν¬λ„ŒνŠΈμ˜ μƒνƒœκ΄€λ¦¬ μ΅œμ ν™” 및 μ»΄ν¬λ„ŒνŠΈ 뢄리λ₯Ό ν†΅ν•œ μ„±λŠ₯ μ΅œμ ν™”λ₯Ό ν•΄μ•Ό ν•œλ‹€. μ»΄ν¬λ„ŒνŠΈκ°€ λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•˜κ³  μ„œλ‘œμ˜ μƒνƒœμ— μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것도 맀우 μ€‘μš”ν•˜λ©°, λΆˆν•„μš”ν•œ μƒνƒœλŠ” μ‚¬μš©ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€. λΆˆλ³€μ„±μ„ μœ μ§€ν•˜λ©° μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•˜λŠ” λ°©μ‹μœΌλ‘œ μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” 것이 μ’‹λ‹€. μ΄λ ‡κ²Œ ν•˜μ§€ μ•ŠμœΌλ©΄ λ³€κ²½ 사항 감지가 μ–΄λ €μ›Œμ„œ λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ΄ λ°œμƒν•  수 μžˆλ‹€.

 

λ˜ν•œ ν•œλ²ˆμ— 화면에 ν•„μš”ν•œ λͺ¨λ“  ν•­λͺ©μ„ λ Œλ”λ§ ν•˜μ§€ μ•Šκ³ , ν˜„μž¬ λ·° κΈ°μ€€μœΌλ‘œ λ³΄μ΄λŠ” λΆ€λΆ„λ§Œ λ¨Όμ € λ Œλ”λ§ ν•˜κ²Œ ν•˜λŠ” κΈ°μˆ λ“±μ„ ν™œμš©ν•˜λŠ” 것도 νš¨κ³Όμ μ΄λ‹€.