์„ฑ๋Šฅ์ตœ์ ํ™”

์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ๋Š” ๋ฐ˜๋ ค๋™๋ฌผ์˜ ๊ธฐ๋ก๊ณผ ์‚ฌ์ง„ ๊ณต์œ ๊ฐ€ ์ฃผ๋œ ๊ธฐ๋Šฅ์ธ ๋งŒํผ, ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ์ž‘์—…์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.๋ฒˆ๋“ค์‚ฌ์ด์ฆˆ๋ฅผ ์—ด์‹ฌํžˆ ์ค„์—ฌ๋„ KB๋‹จ์œ„์ง€๋งŒ.. ์ด๋ฏธ์ง€๋Š” ๋‹จ์œ„๋ถ€ํ„ฐ MB์ด๋ฏ€๋กœ, ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋Š” ํ•„์ˆ˜์ด๋‹ค. Next.js์˜ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”Next.js๋Š” next/image๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์ค€๋‹ค.But, ๋ฆฌ์•กํŠธ๋Š” ์ด์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ง์ ‘ ์ตœ์ ํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค...!๐Ÿซฃ  ์ž๋™ resizingWebp ๊ฐ™์€ ์ตœ์‹  ์ด๋ฏธ์ง€ ํฌ๋งท ์ง€์›Lazy Loading๋กœ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„ ํ–ฅ์ƒCDN ์ง€์›์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ๊ณต๋ถ€ํ•ด๋ฉด์„œ, ์ ์šฉํ•ด๋ณด์•˜๋‹ค.  1. browser-image-compression ํ™œ์šฉํ•œ ์ด๋ฏธ์ง€ ํญ, ํƒ€..
์‚ฌ์ง„ ๊ณต์œ ๊ฐ€ ๋ฉ”์ธ ์„œ๋น„์Šค ํŠน์„ฑ ์ƒ, ํ…์ŠคํŠธ๋ณด๋‹จ ์ด๋ฏธ์ง€์˜ ๊ด€์‹ฌ๋„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€๋ฅผ ๋จผ์ € ๋ฐฐ์น˜ํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ, ์šฐ๋ คํ–ˆ๋˜๋Œ€๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋”ฉ๋˜๊ณ ๋‚˜์„œ ํ…์ŠคํŠธ๊ฐ€ ๋ฐ€๋ฆฌ๊ฒŒ๋˜๋ฉด์„œ ๋Œ€๊ทœ๋ชจ ๋ ˆ์ด์•„์›ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์—ฌ๋Ÿฌ์žฅ์˜ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ์— CLS ์ ์ˆ˜๊ฐ€ 0.8๋กœ ์–ด๋งˆ์–ด๋งˆํ•˜๋‹ค... ๐Ÿ‘‰๐Ÿป placeholder๋กœ ๋ ˆ์ด์•„์›ƒ์ด ๋ฐ€๋ฆฌ๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.  โ—๏ธ ๋ฌธ์ œ์ ์ฒ˜์Œ์—” ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ, ๊ฒŒ์‹œ๋ฌผ์˜ ์ด๋ฏธ์ง€๊ฐ€ ๊ทœ์ •๋œ ์‚ฌ์ด์ฆˆ (1:1, 3:4)์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€ ์ž˜๋ฆผํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š”๊ฒƒ์„ ํ”ผํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์ด ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์„ ์œ ์ง€ํ•œ๋‹ค๋ฉด ๊ธฐ์กด์˜ ์›๋ณธ๋น„์œจ์„ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์ „์—” ์•Œ์ˆ˜๊ฐ€ ์—†๋‹ค๋ณด๋‹ˆ placeholder์„ ์ •์˜ํ•˜๊ธฐ๊ฐ€ ๋‚œ๊ฐํ•ด์ง„๋‹คplaceholder๋งŒ ..
CSR์˜ ๋Œ€ํ‘œ์ ์ธ ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•ด๋ณด์•˜๋‹ค. 1. React.lazy์™€ Suspense ์ ์šฉํ•˜๊ธฐ SPA์˜ ๋Œ€ํ‘œ์ ์ธ ๋‹จ์ ์œผ๋กœ, ์ตœ์ดˆ ๋กœ๋“œ์‹œ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๊ฐ€ ๊ธธ์–ด์ง„๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜๊ฐ€ lazy Loading์ด๋‹ค. ๋™์  load  ํ•ด๋‹น ๋ชจ๋“ˆ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ๋กœ๋“œ → ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…(code splitting)๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ(lazy loading)์„ ๊ฐ€๋Šฅ → ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋‚˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋งŒ ๋‹ค์šด๋กœ๋“œ๋ฉ๋ƒฅ์ƒํ™œ ์„œ๋น„์Šค์˜ ๋ผ์šฐํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.const PATHS = { main: "/main", logIn: "/", signUp: "/signup", f..
Yuuuki
'์„ฑ๋Šฅ์ตœ์ ํ™”' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก