https://web.dev/fast/#optimize-your-images ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฝํ ๋ธ๋ก๊ทธ ๊ธ์ ๋๋ค.*
๋์
์๋น์ค์ ์๋๋ UX์ ์ํฅ์ ๋ฏธ์น๊ณ , UX๋ ๊ณง ์ฌ์ฉ์์ ์ ์ ์ ๊ฒฐ์ ํ๋ค. ์๋น์ค ์๋ ๊ฐ์ ์๋ ๋ค์ํ ์ต์ ํ๊ฐ ํ์ํ๋ฐ, ์ด๋ฒ์๋ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ดํด๋ณด์.
์ด๋ฏธ์ง ์ข ๋ฅ
์ด๋ฏธ์ง๋ 2๊ฐ์ง ์ข ๋ฅ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
- vector ์ด๋ฏธ์ง
- raster ์ด๋ฏธ์ง
vector ์ด๋ฏธ์ง๋ ์ , ์ , ๋ฉด ๋ฑ์ ๋ฒกํฐ์ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ํํํ๋ ๋ฐฉ์์ด๋ฉฐ, ๊ฐ๋จํ ๊ธฐํํ ๋ชจ์ (๋ก๊ณ , ๊ธ์, ์์ด์ฝ ๋ฑ)์ ๋ํ๋ด๋ ๋ฐ์ ์ ํฉํ๋ค. vector ์ด๋ฏธ์ง๋ ์ฌ์ด์ฆ์ ๋ฐ๋ฅธ ๊นจ์ง ์์ด ์ด๋ฏธ์ง๋ฅผ ์ ๋ฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํํํด์ผ ํ๋ ๋ชจ์์ด ๋ณต์กํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ด ๋ง์์ง๋ค๋ ๋จ์ ์ด ์๋ค.
raster ์ด๋ฏธ์ง๋ ํํ ๋ฃ๋ png, jpeg, webp ๋ฑ์ ํฌ๋งท์ ๊ฐ๋ ํํ ๋ฐฉ์์ด๋ค. pixel ๋จ์๋ก ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ encoding ํ๋ฉฐ, ์ฌ์ด์ฆ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๊ฐ ๊นจ์ง๋ฏ๋ก ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ค์ํ ์ฌ์ด์ฆ์ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
- raster ์ด๋ฏธ์ง์ ๊ตฌ๋ถ์ lossy filter ๊ณผ์ ๊ณผ lossless filter ๊ณผ์ ์์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ์ง์ ๋ฐ๋ผ ์ด๋ฃจ์ด์ง๋ค.
- lossy filter : pixel data๋ฅผ ์์ ๋ ์ด๋ฏธ์ง ์์ถ ๋ฐฉ๋ฒ
- lossless filter : pixel data๋ฅผ ์๋ฉธ ์์ด ์์ถํ๋ ์ด๋ฏธ์ง ์์ถ ๋ฐฉ๋ฒ
๊ฟํ
1. GIF๋ video element๋ก ํํํ ์ ์๋ค.
<video autoplay loop muted playsinline></video>
video tag์ autoplay(์๋ ์ฌ์), loop, muted ์์ฑ์ ์ด์ฉํ๋ฉด GIF์ ๊ฐ์ด ํํ ๊ฐ๋ฅํ๋ค. source๋ webm ⇒ mp4๋ก ๊ธฐ์ฌํ์ฌ fallback ์ mp4๋ฅผ ์ฌ์ฉํ๋๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
> gif์ ํฌ๋งท ๋ณ๊ฒฝ์ https://www.ffmpeg.org/ ์์ ๊ฐ๋ฅํ๋ค.
2. ๊ฐ๋จํ ๋ชจ์์ vector format์ธ svg๋ฅผ ํ์ฉํ์.
3. svg assets์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฏ๋ก ์์ถํ์.
> SVGO ๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค.
4. webp๋ ๋ค๋ฅธ raster format๋ณด๋ค ๋ซ์ง๋ง, ํ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ์ง ์์ ์๋ ์๋ค.
> raster ์ด๋ฏธ์ง๋ cwebp๋ imagemin ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ convert ํ ์ ์๋ค.
5. ๋ฐ์ํ ์ด๋ฏธ์ง๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ฏธ๋ฆฌ ์ ๋ณด๋ฅผ ์ฃผ์.
<img src="flower-large.jpg" srcset="flower-small.jpg 480w, flower-large.jpg 1080w" sizes="50vw">โ
srcset์ ์ด๋ฏธ์ง ํ์ผ๋ช width๊ฐ comma๋ก ์ด์ด์ ธ ์๊ณ , ๋ธ๋ผ์ฐ์ ์๊ฒ ์ด๋ค ์ด๋ฏธ์ง๊ฐ ์ด๋ค width๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ค๋ช ํด์ค๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์๊ธฐ ์ํด ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ์ง ์์๋ ๋๋๋ก ํด์ค๋ค.size์ srcset ์์ฑ์ด ์์ผ๋ฉด fallback์ผ๋ก src ์์ฑ์ ์ฐพ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ค.
size ์์ฑ์ ์ด๋ฏธ์ง๊ฐ ํ์๋ ๋ ์ผ๋ง๋ ๋๊ฒ ํ์๋์ด์ผ ํ ์ง๋ฅผ ๋ํ๋ธ๋ค. css๋ ์ฌ์ ํ ํ์ํ๊ณ size ์์ฑ์ด ๋๋น๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ์๋์ง๋ง, ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์์ฑ์ ์ด์ฉํ์ฌ ์ด๋ค ์ด๋ฏธ์ง๊ฐ load๋์ด์ผ ํ๋์ง ๊ฒฐ์ ํ๋ค.
6. cdn์ ์ฝ๊ฒ ์๊ฐํด์ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๊ณ ๋ณํํ๊ณ ์ ๋ฌํด์ฃผ๋ api ์ฝํ
์ธ ๋ฅผ ์ฌ์ฉ์์ ๊ฐ๊น์ด ๊ณณ์์ ์ ์กํด์ฃผ๋ ์๋ฒ์ด๋ค.
7. ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ์ด๋ฏธ์ง๋ก ํฉ์ณ์ ๊ด๋ฆฌํ๋ ์ด๋ฏธ์ง ์คํ๋ผ์ดํธ ๊ธฐ๋ฒ๋ ์๋ค.
์ธก์
์ด๋ฏธ์ง ์ต์ ํ์ ๋ํ ์ธก์ ์ lighthouse๋ก ๊ฐ๋ฅํ๋ค.
efficiently encode images ํญ๋ชฉ์ ๋ณด๊ฑฐ๋ lighthouse > options > performance์์ resize ๋์ด์ผ ํ ์ด๋ฏธ์ง๋ค์ ๋ชฉ๋ก์ ๋ณผ ์ ์๋ค.
๋ถ์ ํํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ ์ ์์ต๋๋ค!
๋๊ธ๋ก ์๋ ค์ฃผ์ธ์ :)
'์น (WEB) > ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React context ์ฝ๋ ๋จ์ํํ๊ธฐ :: ๋ฆฌํฉํ ๋ง (0) | 2021.09.21 |
---|---|
๋ฅ๋งํฌ, ์ฑ๋งํฌ, ์ ๋๋ฒ์ ๋งํฌ? :: ๋ฌด์กฐ๊ฑด ์ฑ์ผ๋ก ์ฐ๋๋๋ ์ํฉ ํด๊ฒฐ (0) | 2021.09.01 |
์ธ์ฆ ๋ฐฉ์ :: ๊ธฐ๋ณธ ์ธ์ฆ ์๋ฆฌ๋ถํฐ MSA ์ธ์ฆ๊น์ง (0) | 2021.07.22 |
Micro Service Architecture์ด๋? (0) | 2021.07.22 |
Refresh Token (0) | 2021.07.22 |
Comment