์น ํ์ด์ง์์ ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ์ฌ์ง์ ์ ๋ก๋ํ๋ฉด ์์๊ฐ์ ํ๋ฉด์ ํ์๋ฉ๋๋ค. ์ด ๊ณผ์ ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์๊ณ ๋๋ฉด ์น์ด ๋ค๋ฅด๊ฒ ๋ณด์ ๋๋ค.
1๋จ๊ณ โ URL ์์ฒญ: ์ด๋ฏธ์ง ํ์ผ์ ์์น๋ฅผ ์ฐพ์ต๋๋ค
HTML ์ฝ๋์ ์ด๋ฐ ํ๊ทธ๊ฐ ์๋ค๊ณ ํฉ์๋ค.
<img src="https://example.com/photo.jpg">
๋ธ๋ผ์ฐ์ ๋ ์ด ํ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด example.com ์๋ฒ์ photo.jpg ํ์ผ์ ๋ฌ๋ผ๊ณ ์์ฒญํฉ๋๋ค. ์ด๊ฒ์ด HTTP ์์ฒญ์ ๋๋ค.
์๋ฒ๋ ํ์ผ์ ์ฐพ์์ ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ก ์ ์กํฉ๋๋ค. ๋คํธ์ํฌ๋ฅผ ํตํด ์ด ๋ฐ์ดํฐ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋์ฐฉํฉ๋๋ค.
2๋จ๊ณ โ ๋์ฝ๋ฉ: ์์ถ์ ํ๋๋ค
์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ JPG, PNG, WEBP ๊ฐ์ ์์ถ ํ์์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด ์์ถ์ ํ์ด์ผ ํฉ๋๋ค.
JPG ๋์ฝ๋ฉ: ์์ถ๋ ์ฃผํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ๋ณํํด์ ํฝ์ ์์๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.
PNG ๋์ฝ๋ฉ: ๋ฌด์์ค๋ก ์์ถ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ณธ ํฝ์ ๊ฐ์ผ๋ก ๋ณต์ํฉ๋๋ค.
๋์ฝ๋ฉ์ด ์๋ฃ๋๋ฉด ์ด๋ฏธ์ง๋ ํฝ์ ๋ฐฐ์ด ํํ๊ฐ ๋ฉ๋๋ค. ๊ฐ ํฝ์ ์ RGBA(๋นจ๊ฐ, ์ด๋ก, ํ๋, ํฌ๋ช ๋) 4๋ฐ์ดํธ๋ก ํํ๋ฉ๋๋ค. 1920ร1080 ์ด๋ฏธ์ง๋ผ๋ฉด ์ฝ 8MB์ ํฝ์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋๋ค.
3๋จ๊ณ โ ๋ ์ด์์: ํ๋ฉด์ ์ด๋์ ๊ทธ๋ฆด์ง ๊ณ์ฐํฉ๋๋ค
์ด๋ฏธ์ง๋ฅผ ์ด๋ค ํฌ๊ธฐ๋ก, ์ด๋์ ๋ฐฐ์นํ ์ง ๊ณ์ฐํฉ๋๋ค. CSS์์ width, height, position ๊ฐ์ ์์ฑ์ด ์ด ๋จ๊ณ์ ์ํฅ์ ์ค๋๋ค.
์ด๋ฏธ์ง ํ์ผ์ ์๋ณธ ํฌ๊ธฐ๊ฐ 1000ร800์ด๋๋ผ๋ CSS์์ width: 300px๋ก ์ง์ ํ๋ฉด 300ร240 ํฌ๊ธฐ๋ก ๊ทธ๋ ค์ผ ํฉ๋๋ค. ์ค์ผ์ผ๋ง์ด ํ์ํฉ๋๋ค.
4๋จ๊ณ โ ํ์ธํ : GPU์ ์ ๋ฌํด์ ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค
์ต์ข ์ ์ผ๋ก ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ GPU(๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น)์ ์ ๋ฌํฉ๋๋ค. GPU๋ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค.
ํ๋ ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ GPU ๋ฉ๋ชจ๋ฆฌ์ ํ ์ค์ฒ๋ก ์ฌ๋ ค๋๊ณ , ํ๋ฉด์ ๊ทธ๋ฆด ๋๋ง๋ค GPU๊ฐ ์ง์ ์ฒ๋ฆฌํฉ๋๋ค. ์คํฌ๋กคํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ์ด ์์ด๋ ๋น ๋ฅธ ์ด์ ์ ๋๋ค.
์ด๋ฏธ์ง ๋ก๋ฉ์ด ๋๋ฆฐ ์ด์
ํ์ผ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด: ๋คํธ์ํฌ ์ ์ก ์๊ฐ์ด ๊น๋๋ค. 10MB ์ด๋ฏธ์ง๋ ๋๋ฆฐ ์ธํฐ๋ท์์ ์์ญ ์ด๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋์ฝ๋ฉ ๋น์ฉ: JPG ๋์ฝ๋ฉ์ ๋น๊ต์ ๋น ๋ฅด์ง๋ง, ๊ณ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ๋ง์ด ๋์ฝ๋ฉํ๋ฉด CPU ์ฌ์ฉ๋์ด ๋์์ง๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ: ๋์ฝ๋ฉ๋ ํฝ์ ๋ฐ์ดํฐ๋ ์์ถ ํ์ผ๋ณด๋ค ํจ์ฌ ํฝ๋๋ค. ๋ง์ ์ด๋ฏธ์ง๋ฅผ ํ ํ์ด์ง์ ์ฌ๋ฆฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ๋๋ ค์ง๋๋ค.
์ง์ฐ ๋ก๋ฉ(Lazy Loading)
์ด๋ฏธ์ง๋ฅผ ํ๋ฉด์ ๋ณด์ด๋ ์์ ์๋ง ๋ก๋ํ๋ ๊ธฐ์ ์ ๋๋ค. ์คํฌ๋กคํ์ง ์์ผ๋ฉด ๋ณด์ด์ง ์๋ ์ด๋ฏธ์ง๋ ๋ฏธ๋ฆฌ ๋ก๋ํ์ง ์์ต๋๋ค. HTML์์ ์ด๋ ๊ฒ ์ค์ ํฉ๋๋ค.
<img src="photo.jpg" loading="lazy">
๋ธ๋ผ์ฐ์ ์์ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ์ ๋ค
์ต๊ทผ์๋ ๋ธ๋ผ์ฐ์ ์์ฒด์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ API๊ฐ ๋ง์์ก์ต๋๋ค.
Canvas API: ์ด๋ฏธ์ง๋ฅผ ํฝ์ ๋จ์๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ฐ๊ธฐ ์กฐ์ , ํํฐ ์ ์ฉ, ํฌ๊ธฐ ๋ณ๊ฒฝ ๊ฐ์ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ฒ ์์ด ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฏธ์ง๋ฅผ ํธ์งํ ์ ์๋ ์ด์ ์ ๋๋ค.
ImageBitmap API: ์ด๋ฏธ์ง๋ฅผ ๋น๋๊ธฐ๋ก ๋์ฝ๋ฉํด์ UI๊ฐ ๋ฉ์ถ์ง ์๊ฒ ํฉ๋๋ค.
WebP, AVIF ์ง์: ์ต์ ๋ธ๋ผ์ฐ์ ๋ ์๋ก์ด ์ด๋ฏธ์ง ํฌ๋งท์ ์ง์ ๋์ฝ๋ฉํฉ๋๋ค.
์ ๋ฆฌ
๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ ์์ฒญ, ๋ค์ด๋ก๋, ๋์ฝ๋ฉ, ๋ ์ด์์ ๊ณ์ฐ, GPU ๋ ๋๋ง์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ด ๊ณผ์ ์ด 0.1์ด ์ด๋ด์ ์ผ์ด๋๊ธฐ๋ ํ์ง๋ง, ํ์ผ์ด ํฌ๊ฑฐ๋ ์ด๋ฏธ์ง๊ฐ ๋ง์ผ๋ฉด ์ง์ฐ์ด ์๊น๋๋ค. ์ด๋ฏธ์ง ์ต์ ํ๊ฐ ์น ์ฑ๋ฅ์ ์ค์ํ ์ด์ ๊ฐ ์ฌ๊ธฐ ์์ต๋๋ค.