๐Ÿ–ฅFrontEnd/ํ”„๋ก ํŠธ์—”๋“œ

์ตœ์ ํ™” (Optimization), ์ตœ์ ํ™” ๊ธฐ๋ฒ•

hellohailie 2022. 8. 9. 16:57

์ตœ์ ํ™” (Optimization) ๋ž€?

์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ ์›ํ•˜๋Š” ๊ฐ€์žฅ ์•Œ๋งž์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. 

์ตœ์ ํ™”๋ฅผ ์ž˜ ํ•ด๋†“์€ ์•ฑ์ผ์ˆ˜๋ก ๋” ๋น ๋ฅด๊ฒŒ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. => ์•ฑ์ด ๋” ๋น ๋ฅธ ์†๋„๋กœ ๊ตฌ๋™๋˜๋ฉด์„œ ์œ ์ €์—๊ฒŒ ์ข‹์€ UX๋ฅผ ์ค€๋‹ค. 

 

์—ฌ๋Ÿฌ ๋ถ„์•ผ์—์„œ ์ตœ์ ํ™”์˜ ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ, ์›น ๊ฐœ๋ฐœ์—์„œ์˜ ์ตœ์ ํ™”๋ž€, ์ฃผ์–ด์ง„ ์กฐ๊ฑด ์•„๋ž˜์—์„œ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ํ™”๋ฉด์„ ํ‘œ์‹œํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 


์™œ ์ตœ์ ํ™”๋ฅผ ํ•ด์•ผํ• ๊นŒ??

1. ์ดํƒˆ๋ฅ  ๊ฐ์†Œ

์›น ๊ฐœ๋ฐœ์—์„œ์˜ ์ตœ์ ํ™”๋Š” ํ™”๋ฉด์„ ์ตœ๋Œ€ํ•œ ๋น ๋ฅธ ์†๋„๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๋งŒ์•ฝ ์ตœ์ ํ™”๊ฐ€ ์ž˜๋˜์ง€ ์•Š์€ ์›น์ด๋ผ๋ฉด ํ™”๋ฉด ๋กœ๋”ฉ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ดํƒˆํ•  ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

=> ์›น ์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋ฅผ ์ค„์ด๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ดํƒˆ๋ฅ ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ค„์—ฌ๋ณด์ž!

 

2. ์ „ํ™˜์œจ ์ฆ๊ฐ€

์ „ํ™˜์œจ์ด๋ž€, ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์‚ฌ์šฉ์ž ์ค‘ ํšŒ์›๊ฐ€์ž…, ์ƒํ’ˆ ๊ตฌ๋งค, ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ, ๋‹ค์šด๋กœ๋“œ ๋“ฑ์˜ ํ–‰์œ„๋ฅผ ํ•œ ๋ฐฉ๋ฌธ์ž์˜ ๋น„์œจ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

3. ์ˆ˜์ต ์ฆ๋Œ€

์ดํƒˆ๋ฅ  ๊ฐ์†Œ, ์ „ํ™˜์œจ ์ฆ๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๋Œ€ ๋ฐ ํšŒ์› ์ˆ˜ ์ฆ๊ฐ€๋กœ ์ด์–ด์ง€๊ณ , ์ด๋Š” ๊ณง ์ˆ˜์ต ์ฆ๋Œ€๋กœ ์ด์–ด์ง„๋‹ค. 

(๋กœ๋”ฉ ์†๋„๊ฐ€ 1์ดˆ ๋นจ๋ž์„ ๋•Œ, ์•„๋งˆ์กด ํŒ๋งค๋Ÿ‰์€ 1%, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰๋Ÿ‰์€ 0.2%, ์›”๋งˆํŠธ์˜ ์ „ํ™˜์œจ์€ 2% ์ฆ๊ฐ€ํ–ˆ๋‹ค.

์ด ์ˆ˜์น˜๋ฅผ ๋ˆ์œผ๋กœ ํ™˜์‚ฐํ•˜๋ฉด ๊ฐ๊ฐ 68์–ต ๋‹ฌ๋Ÿฌ, 4์–ต 5์ฒœ๋งŒ ๋‹ฌ๋Ÿฌ, 2์–ต 4์ฒœ 400๋งŒ ๋‹ฌ๋Ÿฌ์ด๋‹ค. )

 

 

4. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ (UX) ํ–ฅ์ƒ

ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋น ๋ฅผ์ˆ˜๋ก UX๋Š” ํ–ฅ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด UX๊ฐ€ ๋”์šฑ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋กœ๋”ฉ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ, ์Šคํ”ผ๋„ˆ, ์Šค์ผˆ๋ ˆํ†ค๊ณผ ๊ฐ™์ด ๋กœ๋”ฉ ์ค‘์ž„์„ ์•Œ๋ ค์ฃผ๋Š” UI๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. 

 

์ฐธ๊ณ ) https://reactjsexample.com/react-component-for-loading-animations/

 

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋ณด๋‹ค ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„ ์ž์ฒด๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค. 

 


1. HTML & CSS ์ตœ์ ํ™” ํ•˜๊ธฐ

HTMLํŒŒ์ผ์€ DOMํŠธ๋ฆฌ๋ฅผ, CSSํŒŒ์ผ์€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‘ ํŠธ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ๋ Œ๋”๋งํ•œ๋‹ค. 

์ด๋•Œ ํŠธ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ณต์žกํ• ์ˆ˜๋ก ๋” ๋งŽ์€ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ Œ๋”๋ง์— ์†Œ๋ชจ๋˜๋Š” ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง„๋‹ค. 

๋”ฐ๋ผ์„œ HTML, CSS ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 

 

โœ”๏ธ HTML ์ตœ์ ํ™” ํ•˜๊ธฐ

1. DOM ํŠธ๋ฆฌ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค๊ธฐ 

 

DOM ํŠธ๋ฆฌ๊ฐ€ ๊นŠ๊ณ , ์ž์‹ ์š”์†Œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก DOM ํŠธ๋ฆฌ์˜ ๋ณต์žก๋„๋Š” ์ปค์ง„๋‹ค. ๋ณต์žก๋„๊ฐ€ ์ปค์งˆ์ˆ˜๋ก DOM ํŠธ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„๋•Œ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๋งŽ์•„์ง„๋‹ค. ๊ทธ๋ž˜์„œ ๋ถˆํ•„์š”ํ•œ ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ์‚ญ์ œํ•˜๊ธฐ!

 

2. ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ

 

์ธ๋ผ์ธ ์Šคํƒ€์ผ์€ ๋ฆฌํ”Œ๋กœ์šฐ๋ฅผ ๊ณ„์† ๋ฐœ์ƒ์‹œ์ผœ์„œ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ์ ์„ ๋Šฆ์ถ”๊ฒŒ ๋œ๋‹ค. 

๋”ฐ๋ผ์„œ CSS ํŒŒ์ผ์„ ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์„œ ์Šคํƒ€์ผ ์†์„ฑ ์ค‘๋ณต๋„ ์—†์• ๊ณ , ํ•œ๋ฒˆ์˜ ๋ฆฌํ”Œ๋กœ์šฐ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ž!

 

(์• ์ดˆ์— ์ธ๋ผ์ธ ์Šคํƒ€์ผ์€ ์›น ํ‘œ์ค€์— ๋งž์ง€ ์•Š์Œ.)

 

โœ”๏ธ CSS ์ตœ์ ํ™” ํ•˜๊ธฐ

1. ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ CSS ์ œ๊ฑฐํ•˜๊ธฐ

 

CSS ํŒŒ์ผ์˜ ๋ชจ๋“  ์ฝ”๋“œ์˜ ๋ถ„์„์ด ๋๋‚œ ํ›„์— CSSOM ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋งŒํผ CSSOM ํŠธ๋ฆฌ์˜ ์™„์„ฑ์ด ๋Šฆ์–ด์ง„๋‹ค. 

๋”ฐ๋ผ์„œ ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๋Š” ์‚ญ์ œํ•˜๊ณ , ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ์ผ์ด ์ƒ๊ธฐ๋ฉด, CSS ์ฝ”๋“œ๋„ ๊ฐ™์ด ์‚ญ์ œํ•˜๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด์ž!

 

2. ๊ฐ„๊ฒฐํ•œ ์…€๋ ‰ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

 

์…€๋ ‰ํ„ฐ๊ฐ€ ๋ณต์žกํ• ์ˆ˜๋ก ์Šคํƒ€์ผ ๊ณ„์‚ฐ๊ณผ ๋ ˆ์ด์•„์›ƒ์— ์‹œ๊ฐ„ ์†Œ์š”๊ฐ€ ๋˜๋ฏ€๋กœ, ์ตœ๋Œ€ํ•œ ๊ฐ„๊ฒฐํ•œ CSS ์…€๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ž!

 


2. ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ ์ตœ์ ํ™” ํ•˜๊ธฐ

HTML ํŒŒ์ผ์—์„œ JS ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” <script> ์š”์†Œ๋ฅผ, CSS ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” <link> ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

์ด๋•Œ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์œ„์น˜๊ฐ€ ์–ด๋””์ธ๊ฐ€์— ๋”ฐ๋ผ์„œ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ์ ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. 

 

โœ”๏ธ CSS ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•  ๋•Œ, DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

DOM ํŠธ๋ฆฌ๋Š” HTML ์ฝ”๋“œ๋ฅผ ํ•œ์ค„ ํ•œ์ค„ ์ฝ์œผ๋ฉด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ ,

CSSOM ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ, CSS ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ํ•ด์„ํ•ด์•ผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๐Ÿ‘‰ ๊ทธ๋ž˜์„œ CSSOM ํŠธ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก HTML ๋ฌธ์„œ์˜ ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•œ๋‹ค. (<head> ์š”์†Œ ์•ˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ)

 

โœ”๏ธ JS ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

JS๋Š” DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 

HTML ์ฝ”๋“œ ํŒŒ์‹ฑ ์ค‘์— <script> ์š”์†Œ๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น <script>๊ฐ€ ์‹คํ–‰๋˜๊ณ , 1. <script> ์š”์†Œ ์ด์ „๊นŒ์ง€ ์ƒ์„ฑ๋œ DOM๊นŒ์ง€๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ <script>๋ฅผ HTML ์ค‘๊ฐ„์— ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ์š”์†Œ ์ดํ›„์— ์ƒ์„ฑ๋  DOM์„ ์ˆ˜์ •ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ™”๋ฉด์ด ์˜๋„ํ•œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. 

2. <script> ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋˜๋Š”๋ฐ ์ด ์‹œ๊ฐ„๋งŒํผ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ๊ฐ„์ด ๋Šฆ์ถฐ์ง„๋‹ค. 

 

๐Ÿ‘‰ ๊ทธ๋ž˜์„œ JS ํŒŒ์ผ์€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋Š” ์‹œ์ ์ธ HTML ๋ฌธ์„œ ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•œ๋‹ค. 

 

 

 

async

 ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค์ž๋งˆ์ž ์‹คํ–‰์‹œํ‚จ๋‹ค. 

 

defer

ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ํŒŒ์‹ฑ ํ›„์— ์‹คํ–‰์‹œํ‚จ๋‹ค. 

 

 

์‚ฌ์šฉ๋ฐฉ๋ฒ•

defer ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ์ผ๋‹จ ๋นจ๋ฆฌ ๋ถˆ๋Ÿฌ์˜จ๋‹ค์Œ์— ์‹คํ–‰์‹œํ‚ค๋Š”๊ฒŒ ์ข‹๋‹ค. 

head ํƒœ๊ทธ์— ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. 

 

 


3. ๋ธŒ๋ผ์šฐ์ € ์ด๋ฏธ์ง€ ์ตœ์ ํ™”ํ•˜๊ธฐ

ํŽ˜์ด์ง€์˜ ๋Œ€๋ถ€๋ถ„ ์šฉ๋Ÿ‰์€ HTML/ CSS / JS ์™€ ๊ฐ™์€ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ, ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์ฐจ์ง€ํ•œ๋‹ค. 

์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์„ ์ค„์ด๊ฑฐ๋‚˜, ์ˆ˜๋ฅผ ์ค„์ด๋ฉด UX ๊ฐœ์„ ์ด ๋”์šฑ ํšจ์œจ์ ์ด๊ฒŒ ๋œ๋‹ค. 

โœ”๏ธ ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ

ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„ ์š”์ฒญ์ด ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋Š”๋ฐ, ์„œ๋ฒ„ ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์Šคํ”„๋ผ์ดํŠธ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์ž!

 

* ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ž€

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ํ•ฉ์ณ์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ, CSS์˜ background-position ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€์˜ ์ผ์ • ๋ถ€๋ถ„๋งŒ ํด๋ž˜์Šค ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

* background-position๋Š” -(๋งˆ์ด๋„ˆ์Šค) ์†์„ฑ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์ธ๋‹ค. 

 

์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ๋ฒˆ์˜ ์ด๋ฏธ์ง€ ์š”์ฒญ์œผ๋กœ ๊ฐœ๋ณ„ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 

 

โœ”๏ธ ์•„์ด์ฝ˜ ํฐํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

Font Awesome์ด๋‚˜ React Icons ์‚ฌ์šฉํ•˜๊ธฐ

 

๐Ÿ‘‡ CDN์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๐Ÿ‘‡

Font Awesome๊ฐ€์ž…์‹œ ํ‚คํŠธ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š”๋ฐ, ์ด๋ฅผ HTML์˜ <head> ์š”์†Œ์— ๋„ฃ์–ด์ฃผ๊ณ , ์‚ฌ์šฉํ•  ์•„์ด์ฝ˜์„ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. 

 

๐Ÿ‘‡ Font Awesome ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿ‘‡

2022.07.11 - [HTML & CSS] - ๋ฆฌ์•กํŠธ fontawesome ์‚ฌ์šฉ๋ฐฉ๋ฒ•

 

โœ”๏ธ WebP ๋˜๋Š” AVIF ์ด๋ฏธ์ง€ ํฌ๋งท ์‚ฌ์šฉํ•˜๊ธฐ

JPEG, PNG ํ˜•์‹๋ณด๋‹ค ์šฉ๋Ÿ‰์„ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท!!

์ตœ๊ทผ์— ๋“ฑ์žฅํ•œ ํฌ๋งท์ด๊ธฐ ๋•Œ๋ฌธ์—, ์•„์ง ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 

 

ํ•˜์ง€๋งŒ, ๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ์ด๋ฏธ์ง€ ํ˜ธํ™˜์„ฑ์„ ํŒŒ์•…ํ•ด์„œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ถ„๊ธฐํ•  ํ•„์š”์—†์ด HTML์˜ <picture>ํƒœ๊ทธ*๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

* img ์š”์†Œ์˜ ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‚ฌ์šฉ

<picture>
  <source srcset="logo.webp" type="image/webp">
  <img src="logo.png" alt="logo">
</picture>

โžฅ ๋งŒ์•ฝ ์ ‘์†ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ <source>ํƒœ๊ทธ ๋‚ด์˜ srcset์— ์ •์˜ํ•œ WebP ํฌ๋งท์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น <source> ํƒœ๊ทธ๋Š” ๋ฌด์‹œ๋œ๋‹ค. 

 

4. ์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ

์บ์‹œ๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ์ด๊ณ , ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 

์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งค๋ฒˆ ๋‹ค์šด๋กœ๋“œ๋ฐ›์„ ํ•„์š”์—†์ด ์บ์‹œ์—์„œ ๊บผ๋‚ด์™€์„œ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 

 

=> ํ”„๋กœํŠธ์—”๋“œ์—์„œ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”๋ฅผ ์ž‘์„ฑํ•ด์„œ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 

  • If-Modified-Since : ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ Last-Modified ๊ฐ’ ์ดํ›„์— ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
  • If-None-Match : ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’๊ณผ ํ˜„์žฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’์ด ๊ฐ™์€์ง€ ํ™•์ธํ•˜๊ณ , ๊ฐ™์œผ๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ‘† ๋‘ ์ข…๋ฅ˜์˜ ํ—ค๋”๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค. 

(๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค๊ฐ€ ๋งค์นญ๋˜๋Š” ์‘๋‹ต ํ—ค๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

5. CDN ์‚ฌ์šฉํ•˜๊ธฐ (content delivery network)

๋„คํŠธ์›Œํฌ ์ง€์—ฐ์€ ์œ ์ €์™€ ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„๊ฐ„์˜ ๋ฌผ๋ฆฌ์  ๊ฑฐ๋ฆฌ์˜ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. 

CDN์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์„ธ๊ณ„ ๊ณณ๊ณณ์— ์žˆ๋Š” ์„œ๋ฒ„์— ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•œ๋‹ค. 

 

CDN์€ ์œ ์ €๊ฐ€ ๊ฐ€๊นŒ์šด ๊ณณ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผํ•˜๋Š” ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ค„๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค. 

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“