[๊ธฐ์ˆ  ๋ฉด์ ‘] ๐Ÿ“— Browser

pyeonneยท2022๋…„ 6์›” 21์ผ
0
post-thumbnail

๐Ÿ“‹ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

๐Ÿ“Œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๊ณผ์ •

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์กฐ

๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์„ฑ ์š”์†Œ


Critical rendering path

Critical rendering path
1. ์œ ์ €๊ฐ€ ์ ‘์†ํ•˜๊ณ ์ž ํ•˜๋Š” URL์„ ์ž…๋ ฅ
2. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ํŒŒ์‹ฑ
3. HTML๊ณผ CSS๋ฅผ DOM (๊ณ„์ธตํ™”)
4. ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ


๐Ÿ“Œ Flexbox

  • ํ–‰ ๋˜๋Š” ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์›น ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹
  • ํฌ๊ธฐ๊ฐ€ ์œ ๋™์ ์ด์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ
  • ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž์ถฐ ํ™”๋ฉด์˜ ์•„์ดํ…œ๋“ค์˜ ๋†’์ด์™€ ๋„“์ด๋ฅผ ์ตœ์ ์˜ ๊ธธ์ด๋กœ ๋งž์ถฐ์คŒ

๐Ÿ“Œ CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ VS JS ์• ๋‹ˆ๋ฉ”์ด์…˜

CSS ์• ๋‹ˆ๋ฉ”์ด์…˜

  • Transition๊ณผ Animation ์†์„ฑ์ด ์กด์žฌ
  • Transition์€ hover๋‚˜ click๊ณผ ๊ฐ™์€ ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ์— ์˜ํ•ด ๋™์ž‘ํ•˜๊ณ , ํ•ด๋‹น ์š”์†Œ์˜ ๋ณ€ํ™”๋ฅผ ์ผ์ • ๊ธฐ๊ฐ„๋™์•ˆ ์ผ์–ด๋‚˜๊ฒŒ ํ•จ
  • Animation์€ ์ด๋ฒคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ์‹œ์ž‘, ์ •์ง€, ๋ฐ˜๋ณต๊นŒ์ง€ ์ œ์–ด ๊ฐ€๋Šฅ
  • IE๋ฅผ ์ž˜ ์ง€์›ํ•˜์ง€ ์•Š์Œ
  • CSS๋งŒ ๊ด€๋ฆฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•จ

JS ์• ๋‹ˆ๋ฉ”์ด์…˜

  • setInterval()๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ด ์š”์†Œ์— ๋ณ€ํ™”๋ฅผ ์คŒ
  • ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ธก๋ฉด์—์„œ๋Š” JS ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์„ ํ˜ธ๋จ
  • ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜์™€ ๋™์ž‘์„ ๊ด€๋ฆฌํ•ด์ค˜์•ผ ํ•จ
  • ์„ธ๋ฐ€ํ•œ ๋™์ž‘๊นŒ์ง€ ๋ณ€ํ˜•์„ ์ค„ ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ์˜ ์ฐจ์ด์ 

localStorage

  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ key-value ์ €์žฅ
  • ์ตœ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰(์•ฝ 5~10MB)์˜ ์ œํ•œ์ด ์žˆ์Œ
  • ๋„๋ฉ”์ธ์ด ๊ฐ™์œผ๋ฉด ์ „์—ญ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ 

sessionStorage

  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ดˆ๊ธฐํ™” (์ƒˆ๋กœ๊ณ ์นจ์€ ์ œ์™ธ)
  • ๊ฒŒ์‹œํŒ์˜ ์ž๋™ ์ž„์‹œ ์ €์žฅ ์šฉ๋„๋กœ ์ž์ฃผ ํ™œ์šฉ
  • ๋„๋ฉ”์ธ์ด ๊ฐ™์•„๋„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์•ˆ๋จ (๋ธŒ๋ผ์šฐ์ € ๋งˆ๋‹ค ๋ณ„๋„์˜ sessionStorage๊ฐ€ ์ƒ์„ฑ๋จ)

  • ๋ฐ์ดํ„ฐ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰์ด ์ž‘์€๋ฐ, ๊ทธ ์ด์œ ๋Š” ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ๋งˆ๋‹ค ์ฟ ํ‚ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ฒจ์„œ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์ž„

๐Ÿ“Œ SSR VS CSR

SSR(Server Side Rendring)

  • ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ์„œ๋ฒ„์—์„œ ๊ทธ๋ฆฐ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌ
  • ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€ ์š”์ฒญ
  • ์ดˆ๊ธฐํ™”๋ฉด ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ์žฆ์€ ์„œ๋ฒ„ ์š”์ฒญ์— ๋”ฐ๋ฅธ ๋ถ€ํ•˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

CSR(Client Side Rendering)

  • ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ทธ๋ฆผ
  • React๋ฅผ ์˜ˆ๋กœ ๋ณด๋ฉด index.js ํŒŒ์ผ๋งŒ ๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ (Single Page Application)
  • ์›น๋ด‡์ด ํฌ๋กค๋งํ•  ๋•Œ๋Š” ์›น์ด ๋กœ๋“œ๋˜๊ธฐ ์ „์˜ ๋นˆ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— SEO์— ๋‹จ์ ์ด ์žˆ์Œ
  • ์ดˆ๊ธฐ ๋กœ๋”ฉ ์ดํ›„ SSR๋ณด๋‹ค ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฆ„

๊ธฐ์กด์—๋Š” ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ตœ๊ทผ์˜ ์›น ํŠธ๋ Œ๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋กœ๋“œ ์‹œ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•œ ๋‹ค์Œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€ ๊ฐฑ์‹ ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋งŒ์„ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๊ฐฑ์‹ ํ•จ. ๋Œ€ํ‘œ์ ์œผ๋กœ React, Vue, Angular๊ฐ€ ์žˆ์Œ


๐Ÿ“Œ CORS(Cross-Origin Resource Sharing)

  • ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅด๋ฉด ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์—†๊ฒŒ ํ•˜๋ ค๋Š” ์ดˆ๊ธฐ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์ฑ…์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ๋ฌธ์ œ

cross-origin ์ผ€์ด์Šค

  • ํ”„๋กœํ† ์ฝœ(http, https), ๋„๋ฉ”์ธ, ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ํ”„๋ก ํŠธ์˜ ๊ฒฝ์šฐ Reqeust Header์— CORS ๊ด€๋ จ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ CORS ํ—ˆ์šฉ์„ ์š”์ฒญํ•จ
  • ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ์šฐํšŒ (์™ธ๋ถ€ ๋„๋ฉ”์ธ ์„œ๋ฒ„์— ๋ฐ”๋กœ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์„œ๋ฒ„์— ์š”์ฒญํ•œ ๋‹ค์Œ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•)

๐Ÿ”— ์ฐธ๊ณ  ๋ž˜ํผ๋Ÿฐ์Šค

profile
๊ฑด๊ฐ•ํ•œ ๋ชธ๊ณผ ๋งˆ์Œ์—์„œ ๊ฑด๊ฐ•ํ•œ ์ฝ”๋“œ๊ฐ€ ํƒœ์–ด๋‚œ๋‹ค !

0๊ฐœ์˜ ๋Œ“๊ธ€