Daily/Today I Learned

22.08.04_TIL

ํ˜ธ๋ฐ€์ด 2022. 8. 4. 09:28

๐Ÿ“Œ ์ด์ œ ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ๋‚จ์€ ์‹œ๊ฐ„์ด 2์ฃผ์ •๋„ ๋‚จ์•˜๋‹ค.... ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋”๋ผ๋„ ํ•ด๋‚ผ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋ณด์ž!

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

์ตœ์ ํ™”(Optimization)

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

ํ—ˆ์šฉ๋œ ์ž์›์˜ ํ•œ๊ณ„ ๋‚ด์—์„œ ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด์„œ ์ตœ์„ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ณผ์ •

 

์ตœ์ ํ™”์˜ ํ•„์š”์„ฑ ๋ฐ ํšจ๊ณผ

  1. ์ดํƒˆ๋ฅ  ๊ฐ์†Œ
    • ์›น ๊ฐœ๋ฐœ์—์„œ์˜ ์ตœ์ ํ™”๋Š” ํ™”๋ฉด์„ ์ตœ๋Œ€ํ•œ ๋น ๋ฅธ ์†๋„๋กœ ํ‘œ์‹œํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    • ํŽ˜์ด์ง€ ๋กœ๋“œ๊ฐ€ 3์ดˆ์ด์ƒ ๊ฑธ๋ฆฌ๋ฉด 53%์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ดํƒˆํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ™”๋ฉด์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ดํƒˆํ•  ํ™•๋ฅ ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.
  2. ์ „ํ™˜์œจ ์ฆ๊ฐ€
    • ์ดํƒˆ๋ฅ ์ด ์ค„์–ด๋“œ๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ „ํ™ฉ์œจ์ด ๋†’์•„์งˆ ํ™•๋ฅ ์ด ์ปค์ง„๋‹ค.
    • ์ „ํ™˜์œจ: ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์‚ฌ์šฉ์ž ์ค‘ ํšŒ์›๊ฐ€์ž…, ์ƒํ’ˆ ๊ตฌ๋งค, ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ, ๋‹ค์šด๋กœ๋“œ ๋“ฑ์˜ ํ–‰์œ„๋ฅผ ํ•œ ๋ฐฉ๋ฌธ์ž์˜ ๋น„์œจ์„ ์˜๋ฏธ
  3. ์ˆ˜์ต ์ฆ๋Œ€
    • ๋น ๋ฅธ ์›น ์‚ฌ์ดํŠธ์˜ ๋กœ๋”ฉ ์†๋„๋Š” ์ดํƒˆ๋ฅ  ๊ฐ์†Œ, ์ „ํ™˜์œจ ์ฆ๊ฐ€, ํŠธ๋ž˜ํ”ฝ ์ฆ๋Œ€, ํšŒ์› ์ˆ˜ ์ฆ๊ฐ€๋กœ ๊ณง ์ˆ˜์ต์˜ ์ฆ๋Œ€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • ์‹ค์ œ ์‚ฌ๋ก€๋กœ ์•„๋งˆ์กด ๋กœ๋”ฉ ์†๋„๊ฐ€ 1์ดˆ ๋นจ๋ผ์กŒ์„ ๋•Œ ์•„๋งˆ์กด ํŒ๋งค๋Ÿ‰์€ 1%, ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰๋Ÿ‰์€ 0.2%๊ฐ€ ์ฆ๋Œ€ํ–ˆ๋‹ค.
  4. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ํ–ฅ์ƒ
    • ์ตœ์ ํ™”๋Š” ํšจ๊ณผ์ ์ธ UX ๊ฐœ์„  ์ˆ˜๋‹จ์ด๋‹ค.
    • ๋กœ๋”ฉ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ ์Šคํ”ผ๋„ˆ, ํ”„๋กœ๊ทธ๋ ˆ์Šค๋ฐ” ๊ฐ™์ด ๋กœ๋”ฉ ์ค‘์ž„์„ ์•Œ๋ ค์ฃผ๋Š” UI๋ฅผ ๋จผ์ € ํ‘œ์‹œํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

HTML, CSS ์ฝ”๋“œ ์ตœ์ ํ™” ํ•˜๊ธฐ

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

HTML ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

  1. DOM ํŠธ๋ฆฌ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค๊ธฐ
    • DOM ํŠธ๋ฆฌ๊ฐ€ ๊นŠ์„์ˆ˜๋ก, ์ž์‹ ์š”์†Œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก DOM ํŠธ๋ฆฌ์˜ ๋ณต์žก๋„๋Š” ์ปค์ง„๋‹ค. ๋ณต์žก๋„๊ฐ€ ํด ์ˆ˜๋ก DOM ํŠธ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์•„์ง์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
  2. ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ
    • ์ธ๋ผ์ธ ์Šคํƒ€์ผ์€ ๊ฐœ๋ณ„ ์š”์†Œ์— ์Šคํƒ€์ผ ์†์„ฑ์„ ์ž‘์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด์„œ ํ•œ ๋ฒˆ์— ์ž‘์„ฑํ•ด๋„ ๋  ์Šคํƒ€์ผ ์†์„ฑ์„ ์ค‘๋ณต์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ ์ด์ฒ˜๋Ÿผ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ค‘๋ณต์€ ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๋ฉฐ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค.
    • CSS ํŒŒ์ผ์„ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋‹จ ํ•œ ๋ฒˆ์˜ ๋ฆฌํ”Œ๋กœ์šฐ๋งŒ ๋ฐœ์ƒํ•˜์—ฌ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ์ ์„ ๋‹จ์ถ•์‹œํ‚จ๋‹ค.

CSS ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

  1. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์ œ๊ฑฐํ•˜๊ธฐ
    • CSS ํŒŒ์ผ์˜ ๋ชจ๋“  ์ฝ”๋“œ์˜ ๋ถ„์„์ด ๋๋‚œ ํ›„์— CSSOM ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ ์ด๋•Œ ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด CSSOM ํŠธ๋ฆฌ์˜ ์™„์„ฑ์ด ๋Šฆ์–ด์ง„๋‹ค.
    • ์œ„์˜ ๋‹จ์  ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์ฝ”๋“œ๋Š” ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  2. ๊ฐ„๊ฒฐํ•œ ์…€๋ ‰ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ
    • ์…€๋ ‰ํ„ฐ๊ฐ€ ๋ณต์žกํ• ์ˆ˜๋ก ์Šคํƒ€์ผ ๊ณ„์‚ฐ๊ณผ ๋ ˆ์ด์•„์›ƒ์— ์‹œ๊ฐ„์„ ๋” ๋งŽ์ด ์†Œ๋ชจํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

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

  1. CSS ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • CSSOM ํŠธ๋ฆฌ๋Š” CSS ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ํ•ด์„ํ•ด์•ผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก HTML ๋ฌธ์„œ ์ตœ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  2. JavaScript ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • JavaScript ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ DOM ์ƒ์„ฑ์ด ์ค‘๋‹จ๋œ๋‹ค. ์ด ์‹œ๊ฐ„๋งŒํผ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ๊ฐ„์ด ๋Šฆ์ถฐ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ JavaScript ํŒŒ์ผ์€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋Š” ์‹œ์ ์ธ HTML ๋ฌธ์„œ ์ตœํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

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

  • ํŽ˜์ด์ง€์˜ ๋Œ€๋ถ€๋ถ„์˜ ์šฉ๋Ÿ‰์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ด๋ฏธ์ง€ ํŒŒ์ผ, ๋ฏธ๋””์–ด ํŒŒ์ผ์ด ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์„ ์ค„์ด๊ฑฐ๋‚˜ ์š”์ฒญ์˜ ์ˆ˜๋ฅผ ์ค„์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ
    • ๋ฐ•์Šค์— ํ‘œ์‹œํ•œ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๊ฒฝ์šฐ ์›น ์‚ฌ์ดํŠธ์˜ ๋กœ๋”ฉ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ์•„ ํ•˜๋‚˜์˜ ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ณ  CSS์˜ background-position ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์˜ ์ผ์ • ๋ถ€๋ถ„๋งŒ ํด๋ž˜์Šค ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  2. ์•„์ด์ฝ˜ ํฐํŠธ ์‚ฌ์šฉํ•˜๊ธฐ
    ์•„์ด์ฝ˜ ์‚ฌ์šฉ์ด ๋งŽ์„ ๋•Œ, ๋ชจ๋“  ์•„์ด์ฝ˜์„ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์•„์ด์ฝ˜ ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.(Font Awesome)
    1. CDN์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ
      • Font Awesome์— ๊ฐ€์ž…ํ•  ๋•Œ ๋ฐœ๊ธ‰๋ฐ›์€ ํ‚คํŠธ๋ฅผ HTML ํŒŒ์ผ head ์š”์†Œ์— ๋„ฃ์–ด์ฃผ๋ฉด CDN์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    2. Font Awesome ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๊ธฐ

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

  • ์ „ํ†ต์ ์ธ ์ด๋ฏธ์ง€ ํฌ๋งท ๋ฐฉ์‹์€ JPEG, PNG ํ˜•์‹์ด ์•„๋‹Œ ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ WebP, AVIF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ๋”์šฑ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.(20~35%)
  • ํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ HTML์˜ picture ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜ธํ™˜์— ๋งž๋„๋ก ๋ถ„๊ธฐ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.
    • *<picture>: img ์š”์†Œ์˜ ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

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

  • ์บ์‹œ๋Š” ๋‹ค์šด๋„๋ฅด ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ๋ฅผ ๋œปํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹œ์—์„œ ๊บผ๋‚ด์™€ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค, ๋กœ๋”ฉ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
    • If-Modified-Since: ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ Last-Modified ๊ฐ’ ์ดํ›„์— ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • If-None-Match: ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’๊ณผ ํ˜„์žฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’์ด ๊ฐ™์€์ง€ ํ™•์ธํ•˜๊ณ , ๊ฐ™์œผ๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

CDN ์‚ฌ์šฉํ•˜๊ธฐ

  • CDN? ์ฝ˜ํ…์ธ ๋ฅผ ์ข€ ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์œ ์ €๊ฐ€ ๊ฐ€๊นŒ์šด ๊ณณ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผํ•˜๋Š” ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค„๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.
  • ์‚ฌ์šฉ๊ฐ€๋Šฅ ์„œ๋น„์Šค
    • CloudFront, Cloudflare ๋“ฑ

ํŠธ๋ฆฌ์‰์ดํ‚น(Tree Shaking)

๋‚˜๋ฌด๋ฅผ ํ”๋“ค์–ด ์ž”๊ฐ€์ง€๋ฅผ ํ„ธ์–ด๋‚ด๋“ฏ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  1. JavaScript ํŒŒ์ผ์˜ ํฌ๊ธฐ
    • JavaScript ํŒŒ์ผ ํฌ๊ธฐ์˜ ์ฆ๊ฐ€, ์š”์ฒญ ํšŸ์ˆ˜์˜ ์ฆ๊ฐ€๋Š” ๋ Œ๋”๋ง์ด ๋Šฆ์–ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ๋Š๋ฆฐ ํ™˜๊ฒฝ์—์„œ ๋” ํฐ ๋ณ‘๋ชฉํ˜„์ƒ์„ ์œ ๋ฐœ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ์‰์ดํ‚น์„ ํ†ตํ•ด ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์„œ ์ตœ์ ํ™”๋ฅผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  2. JavaScript ํŒŒ์ผ์˜ ์‹คํ–‰ ์‹œ๊ฐ„
    • ๋‹ค์šด๋กœ๋“œ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์šฐ์„  ์š”์ฒญ์„ ๋ณด๋‚ด์–ด ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ์˜จ ๋‹ค์Œ ์••์ถ•์„ ํ•ด์ œํ•ด์•ผ ํ•˜๊ณ , JS์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํŒŒ์‹ฑ์ด ๋๋‚˜๋ฉด ์ปดํŒŒ์ผ์„ ์ง„ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.
    • ํŒŒ์ผ์ด ์ปค์งˆ์ˆ˜๋ก ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ ์ฐจ ๋Š˜์–ด๋‚  ๋•Œ, ํŠธ๋ฆฌ์‰์ดํ‚น์„ ํ†ตํ•ด ์ตœ์ ํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

JavaScript ํŠธ๋ฆฌ์‰์ดํ‚น

์›นํŒฉ 4๋ฒ„์ „ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ES6 ๋ชจ๋“ˆ์„ ๋Œ€์ƒ์œผ๋กœ ๊ธฐ๋ณธ์ ์ธ ํŠธ๋ฆฌ์‰์ดํ‚น์„ ์ œ๊ณตํ•œ๋‹ค.

  1. ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ import ํ•˜๊ธฐ
    • import ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ๋•Œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๋ถˆ๋Ÿฌ์™€์„œ ํŠธ๋ฆฌ์‰์ดํ‚น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. Babelrc ํŒŒ์ผ ์„ค์ •ํ•˜๊ธฐ
    • Babel์€ JS ๋ฌธ๋ฒ•์ด ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ES5 ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
    • ์ด๋•Œ, ES5๋ฌธ๋ฒ•์€ require๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— Babelrc ํŒŒ์ผ์— modules: false๋กœ ์ž‘์„ฑํ•˜์—ฌ ES5๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ฃผ๋ฉด ๋œ๋‹ค.
  3. sideEffects ์„ค์ •ํ•˜๊ธฐ
    • ์›นํŒฉ์€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ผ๋„ ํŠธ๋ฆฌ์‰์ดํ‚น ๋Œ€์ƒ์—์„œ ์ œ์™ธ์‹œํ‚จ๋‹ค.
    • package.json ํŒŒ์ผ์—์„œ sideEffects:false๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์•Œ๋ ค ์ฝ”๋“œ๋ฅผ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.(sideEffects:false๋Š” ์ „์ฒด ํŒŒ์ผ์—์„œ์˜ ์„ค์ •์ด๊ณ  ํŠน์ • ํŒŒ์ผ๋งŒ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.)
  4. ES6 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ ์‚ฌ์šฉํ•˜๊ธฐ
    • ES5 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์„ ํ†ต์งธ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ES6 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Lighthouse

  • ๋‹ค์–‘ํ•œ ์ง€ํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€์˜ ์„ฑ๋Šฅ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ์— ๋Œ€ํ•œ ๊ฐœ์„ ์ฑ…์„ ์ œ๊ณตํ•œ๋‹ค.
  • ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœ ํ•œ ์˜คํ”ˆ์†Œ์Šค๋กœ์„œ ์›น ํŽ˜์ด์ง€์˜ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™” ํˆด์ด๋‹ค.
  • ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, PWA, SEO ๋“ฑ์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ ์ด๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž๋Š” ์–ด๋–ค ์›นํŽ˜์ด์ง€๋“  ํ’ˆ์งˆ ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Lighthouse ์‹œ์ž‘ํ•˜๊ธฐ

  1. Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ
  2. ํฌ๋กฌ์—์„œ ๊ฒ€์‚ฌํ•˜๊ณ  ์‹ถ์€ ํŽ˜์ด์ง€์˜ url์„ ์ž…๋ ฅํ•œ๋‹ค.
  3. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ฐ๋‹ค.
  4. lighthouse ํƒญ์„ ํด๋ฆญํ•œ๋‹ค.
  5. Generate report๋ฅผ ํด๋ฆญํ•œ๋‹ค. (Categories์—์„œ ํŠน์ • ์ง€ํ‘œ๋งŒ ์„ ํƒํ•˜์—ฌ ๊ฒ€์‚ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.)
  6. ๊ฒ€์‚ฌ๊ฐ€ ์‹คํ–‰ ๋œ ํ›„, ๊ฒฐ๊ณผ๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋‚ด์— ์ƒ์„ฑ๋œ๋‹ค.

Node CLI์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

Lighthouse๋ฅผ ์„ค์น˜ํ•œ๋‹ค.  → ๋ช…๋ น์–ด๋กœ ๊ฒ€์‚ฌ๋ฅด ์ˆ˜ํ–‰ํ•œ๋‹ค. → ๋ช…๋ น์–ด๋กœ ๋ชจ๋“  ์˜ต์…˜์„ ๋ณธ๋‹ค.

npm install -g lighthouse

lighthouse <url>

lighthouse --help

Lighthouse ๋ถ„์„ ๊ฒฐ๊ณผ ํ•ญ๋ชฉ

  • Performance
    • ์›น ์„ฑ๋Šฅ์„ ์ธก์ •ํ•œ๋‹ค. ํ™”๋ฉด์— ์ปจํ…์ธ ๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ณผ ํ‘œ์‹œ๋œ ํ›„ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€, ํ™”๋ฉด์— ๋ถˆ์•ˆ์ •ํ•œ ์š”์†Œ๋Š” ์—†๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•œ๋‹ค.
  • Accessibility
    • ์›น ํŽ˜์ด์ง€๊ฐ€ ์›น ์ ‘๊ทผ์„ฑ์„ ์ž˜ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋Œ€์ฒด ํ…์ŠคํŠธ๋ฅผ ์ž˜ ์ž‘์„ฑํ–ˆ๋Š”์ง€, ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ์ปจํ…์ธ  ์ƒ‰์ƒ์˜ ๋Œ€๋น„๊ฐ€ ์ถฉ๋ถ„ํ•œ์ง€, ์ ์ ˆํ•œ WAI-ARIA ์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•œ๋‹ค.
  • Best Practices
    • ์›น ํŽ˜์ด์ง€๊ฐ€ ์›น ํ‘œ์ค€ ๋ชจ๋ฒ• ์‚ฌ๋ก€๋ฅผ ์ž˜ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธํ•  ํ™•๋ฅ ์€ ๋†’์ง€ ์•Š์ง€๋งŒ ์ฝ˜์†” ์ฐฝ์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ ๋˜์ง€๋Š” ์•Š๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•œ๋‹ค.
  • SEO
    • ์›น ํŽ˜์ด์ง€๊ฐ€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”๊ฐ€ ์ž˜ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ robots.txt๊ฐ€ ์œ ํšจํ•œ์ง€, <meta> ์š”์†Œ๋Š” ์ž˜ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š”์ง€, ํ…์ŠคํŠธ ํฌ๊ธฐ๊ฐ€ ์ฝ๊ธฐ์— ๋ฌด๋ฆฌ๊ฐ€ ์—†๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•œ๋‹ค.
  • PWA (Progressive Web App)
    • ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ๊ฐ€ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ์„œ๋„ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์•ฑ ์•„์ด์ฝ˜์„ ์ œ๊ณตํ•˜๋Š”์ง€, ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด์ด ์žˆ๋Š”์ง€, ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ปจํ…์ธ ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ์น˜ํ–ˆ๋Š”์ง€ ๋“ฑ์„ ์ ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋กœ ํ™•์ธํ•œ๋‹ค.

Lighthouse์˜ Performance ์ธก์ • ๋ฉ”ํŠธ๋ฆญ

  1. First Contentful Paint
    • ์„ฑ๋Šฅ(Performance) ์ง€ํ‘œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ์ด๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€์— ์ ‘์†ํ–ˆ์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ DOM ์ปจํ…์ธ ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค.
    • ์šฐ์ˆ˜ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋ ค๋ฉด FCP๊ฐ€ 1.8์ดˆ ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
  2. Largest Contentful Paint
    • ๋ทฐํฌํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ปจํ…์ธ ์˜ ๋ Œ๋” ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค.
    • ์ฃผ์š” ์ปจํ…์ธ ๊ฐ€ ์œ ์ €์—๊ฒŒ ๋ณด์ด๋Š” ์‹œ๊ฐ„๊นŒ์ง€๋ฅผ ๊ฐ€๋Š ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Speed Index
    • ์„ฑ๋Šฅ(Performance) ์ง€ํ‘œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ์ด๋‹ค.
    • ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ปจํ…์ธ ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์ง€๋ฅผ ์ธก์ •ํ•œ๋‹ค.
  4. Time to interactive
    • ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์‹œ์ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ์‹œ์ ๊นŒ์ง€์˜ ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค.
      • ํŽ˜์ด์ง€์— FCP๋กœ ์ธก์ •๋œ ์ปจํ…์ธ ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.
      • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๊ฐ€์žฅ ์ž˜ ๋ณด์ด๋Š” ํŽ˜์ด์ง€์˜ ์—˜๋ฆฌ๋จผํŠธ์— ๋“ฑ๋ก๋œ๋‹ค.
      • ํŽ˜์ด์ง€๊ฐ€ 0.05์ดˆ์•ˆ์— ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์— ์‘๋‹ตํ•œ๋‹ค.
  5. Total Blocking Time
    • ํŽ˜์ด์ง€๊ฐ€ ์œ ์ €์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ๊นŒ์ง€์˜ ๋ง‰ํ˜€์žˆ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค.
    • FCP์™€ TTI ์‚ฌ์ด์— ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…๋“ค์„ ๋ชจ๋‘ ๊ธฐ๋กํ•˜์—ฌ TBT๋ฅผ ์ธก์ •ํ•œ๋‹ค.
  6. Cumulative Layout Shift
    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ปจํ…์ธ ๊ฐ€ ํ™”๋ฉด์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์›€์ง์ด๋Š”์ง€(๋ถˆ์•ˆ์ •ํ•œ ์ง€)๋ฅผ ์ˆ˜์น˜ํ™”ํ•œ ์ง€ํ‘œ์ด๋‹ค.

 

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

[udemy] React ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ด๋ผ๋„ ๊พธ์ค€ํžˆ ๋“ฃ๊ธฐ)

Study์›๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„

  • ๋งˆ์ดํŽ˜์ด์ง€ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ๊ตฌ์„ฑ

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • ์ตœ์ ํ™”๋ž€?
  • ์ตœ์ ํ™”์˜ ํ•„์š”์„ฑ๊ณผ ํšจ๊ณผ
  • ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•
  • Ligthhouse๋ฅผ ํ†ตํ•œ ์›น ํŽ˜์ด์ง€ ๊ฐœ์„ 

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.08.08_TIL  (0) 2022.08.08
22.08.05_TIL  (0) 2022.08.05
22.08.03_TIL  (0) 2022.08.03
22.08.02_TIL  (0) 2022.08.02
22.08.01_TIL  (0) 2022.08.01