์ค๋๋๊ณ ๊ธฐ๋ฅ์ด ๋ง์ ์๋น์ค๋ฅผ ๋์์ผ๋ก ํด์ผ ํจ๊ณผ๊ฐ ์๋ค.
Network
์์๋ค์ด ๋ง์ด ์ฐ์ด๋์ง
์๋ฒ์ ๊ฐ๋ค์ค๋ ์๊ฐ์ด ์ผ๋ง๋ ์ค๋ ๊ฑธ๋ ธ๋์ง
DOM content element์ ๋ก๋ฉ ์์ ์ ์์๋
Performance -๋ณ๋ชฉ์ง์ ( ์ด๋ ๋ถ๋ถ์์ ์๊ฐ์ด ๋ง์ด ์์๋์๋์ง)๋ฅผ ๋ณด๋ฉฐ ์ฑ๋ฅ์ ์ธก์ ํ์๋ค.
LightHouse
๋ก๋ฉ ์๋์ ๋ํ ์ง๋จ
์ฑ๋ฅ ๊ฐ์ ์ ์ฒ๋๊ฐ ๋๋ค
FCP :
FMP:
์นํ์ด์ง์ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ์ฃผ์ ์์
* ์ฒซํ์ด์ง๊ฐ ๋๋ฆฐ ๊ฒ FCP, FMP
* ๋ฐ์์ด ๋๋ฆฐ ๊ฒ
* ๋๊ธฐ๋ ๊ฒ (์ ๋๋ฉ์ด์ )
์ต์ ํ ์์ ์งํ ๋ฐฉ๋ฒ
์ง๋จ -> ๊ฐ์ -> ํ ์คํธ -> ์ง๋จ
*์ฐธ๊ณ ) ํ๋ ์์ํฌ๋ ๋ฐ๋๋ผ๋ณด๋ค ๋ ๋ง์ ์ ์ฐจ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๋์๋๋ค .
๐ฎ ?์น์ต์ ํ์ ๋ํด์ ์์๋๊ฑฐ ์์ด์
Dom๋ก๋ฉ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด์ JS ๋ฅผ defer์์ ์ ์ฉํด์
ํ์ผ์ ์์ถํ๊ณ ๋จธ์ง์์ผ์ ๋ฐฐํฌํ๋ ๋ฑ์ ์ ๋ต์ ํตํด ๋ก๋ฉ์๋๋ฅผ ์ค์ผ ์ ์๋ค.
1๏ธโฃ ์ฒซํ์ด์ง๋ฅผ ๋น ๋ฅด๊ฒ ํ์
* HTML Parsing ๋ฐฉํดํ์ง ์๊ธฐ
<script> body ๋์ , defer ๋ async๋ฅผ ์ฌ์ฉ
*buid๋ฅผ ํตํ ์ฝ๋ ์ต์ ํ (ํ์ผ ์์ถํ๊ณ ๋จธ์ง ๋ฐฐํฌ)
code obfuscation ์ค๋ธ์ค์ผ์ดํ (๋๋ ํ) -> ๋ด๊ฐ์ง function์ด๋ฆ์ ๊ธ์ or ๊ณต๋ฐฑ ๋ฑ์ ์ถ์ํด ๋ฌผ๋ฆฌ์ ์ธ ์ฌ์ดํธ์ ์ฌ์ด์ฆ๋ฅผ ์ค์ธ๋ค.
์ฌ๋ฌ๊ฐ ํ์ผ๋ค์ ํฉ์ณ์ ๋ฐฐํฌ
*SSR
SPA ์ฑ๊ธํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์ ์ ๋์ ๊ณผ์
์ฌ์ฉ์ ์์ฒญ ->index.html ๊ป๋ฐ๊ธฐ ๋จผ์ ์ค -> JS์์ฒญ -> JS๋ฐ์์์ -> API ์์ฒญ์ด์์ -> API ๋ฐ์์ด -> ๋ ๋๋ง ํจ -> ํ๋ฉด ๋ณด์ ( ์ฌ์ค ๋๋ฆผ)
SSR ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง
index.html ์์ฒญ -> ์ด? ์๊น ์์ฒญํ์๋? cache์ ๋ฃ๊ธฐ -> ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ์์ฒญํ๋ฉด -> ๋นจ๋ฆฌ response
๋ฏธ๋ฆฌ ์๋ฏธ์๋ ์ฒซํ์ด์ง๋ฅผ ์๋ฒ์์ ์ฒ๋ฆฌํด ์ ๋ฌํ์!
ํด๋ผ์ด์ธํธ์์ ๋ฆฌ์กํธ๋ก ๋ ๋๋งํ๋ฉด, ์๋ฒ์์๋ ๋ฆฌ์ํธ๋ก ๋ ๋๋ง์ ํด์ผํจ ->
โค๏ธ ์ฒซํ์ด์ง๋ฅผ ๋น ๋ฅด๊ฒ ๋จ๊ฒ ํจ
โค๏ธ SEO์ ์ข์
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง CSR
CSR๋ก ๋ ๋๋ง -> Node.js๋ก ์ฐ๊ฒฐํด์ ์ ๋ฌํจ (ํ๋ก ํธ์๋ฒ)
pre-rendering : build๋จ๊ณ์์ API์์ฒญ์ ๋ค ํด ์์ฑ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌ
*Lazy Loading
์ด๋ฏธ์ง๋ก๋ฉ์ ๋ ๋๋ง ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์, ์คํฌ๋กค ์ด๋ฒคํธ๋ฅผ ๋ฐฉํดํ ์ ์์
lascChild๋ก append๋ฅผ ์์ผ์
ex) 100๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด , 10๊ฐ๋ง ๋จผ์ ๊ฐ์ ธ์ค๊ณ -> ์ฌ์ฉ์์ ์คํฌ๋กค -> ๊ทธ ๋ค์์ 10๊ฐ ๊ฐ์ ธ์ค๊ณ
๋์ ์ผ๋ก scriptํ์ผ์ ํ๋ฉด์ ์ถ๊ฐํ๋ ๊ฒ
JS lazy Loading: <script ๋ฅผ ๋์ ์ผ๋ก ํ๋ฉด์ ๋ฃ์ผ๋ฉด -> DOM์ ์ถ๊ฐ๋จ -> ๋ฐ๋ก server์ ์์ฒญ (request) -> ๋ธ๋ผ์ฐ์ ๋ ๋ฐ๋ก ์คํ
Image lazy Loading: <img ๋ฅผ ๋์ ์ผ๋ก DOM์ ์ถ๊ฐํ๊ธฐ -> ''
React? -> lazy component Loading ๊ฐ๋ฅ!
Dynamic import
๋์ ์ผ๋ก JS ์ค๊ฐ์ ์ฝ๋๋ฅผ import ํด์ tk์ฌ์ฉ
IntersectionObserver
2๏ธโฃ ๋๋ฆฐ ์ ๋๋ฉ์ด์ ์ ์ง์ฐ์ ํด๊ฒฐํ์
*๋ฉ์ธ ์ค๋ ๋๋ฅผ blocking ํ์ง ์๊ธฐ ์ํ ๋ด๋ถ์กฐ์น๋ค (Fiber architecture)
- ๋ฉ์ธ์ค๋ ๋๊ฐ ๋น ์๊ฐ์ ํํ์ด ๋ค์ด์ ์ผ์ ์ฒ๋ฆฌํจ
- Fiber architecture: ๋ฉ์ธ์ค๋ ๋์ ๋ฐฉํด๊ฐ ๋์ง ์๋๋ก ์ด๋ฏธ๋ ๋๋ง ๋๊ฒ๊ณผ ๋ ๋๋ง ๋ ๊ฒ์ ๋น๊ตํ์ฌ ์๋ก ๋ค์ด์ฌ๊ฒ๋ง ๋ฆฌ๋ ๋๋ง ํ๋ค.
- React ๋ด๋ถ์ ์๋ ์์ค์ฝ๋
* Re-rendering ์ต์ํ (๊ฐ์ DOM์ ํตํ ๋ฒ ๋ชจ๋ฆฌ ๋จ๊ณ์์์ ๋ณ๊ฒฝ์ฌํญ ๋น๊ต)
*์ค๋ณต๊ณ์ฐ ์ค์ด๊ธฐ
React = ๋ฆฌ๋ ๋๋ง์ด ๋ง์ด ๋๋ ๊ตฌ์กฐ => ๊ทธ ์์ ๋ณต์กํ ์ฐ์ฐ์ ์ต์ํ ํด์ผ ํจ
Data fetching :
์ฌ์ฉ์๊ฐ ์ด๋ค๊ฑธ ๋๋ฅด๋ฉด ์๋ฒ์ ์์ฒญํด์ ๊ฐ์ ธ์ค๋ ๊ฒ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด์ง๋ง ,
์ฌ์ฉ์๊ฐ ์ผ์ ์๊ฐ๋ด์ ์ค๋ณต๋ data๋ฅผ ์ค๋ณตํด์ ์์ฒญํ ๊ฒฝ์ฐ์๋ ์บ์์ ์ ์ฅํด๋์๋ค๊ฐ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ด ์์ (์ ํจ์บ์์๊ฐ๋์)
chache then network
์ ํจ์บ์์๊ฐ์ด ๋๋๊ฐ์ฏค์ ์บ์์์ฒญ๊ณผ ๋๋ถ์ด ์๋ฒ์๋ ๋์์ ์์ฒญํ์ฌ cache update๋ฅผ ์ค์ํ๋ค.
*๋คํธ์ํฌ ์์ฒญ ์บ์ํ๊ธฐ (Service Worker<PWA>, Cache header์ ๋ต)
service Worker ์ผ์ข ์ cache ๊ฐ๋ก์ฑ๊ธฐ - ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ ๋จ)์์ ๋์ํจ
์๋น์ค์ ๋ฐ๋ผ cache์ ์ฑ ์ ์ธ์์ ๋ฐ๋ผ์ผ ํ๋ค . (์ฃผ์๊ฐ์๊ฒฝ์ฐ๋ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณํ๊ธฐ ๋๋ฌธ์)
*๋ณต์กํ ์ฐ์ฐ ์์ (Web Worker ํ์ฉ)
JS๋ ์ฑ๊ธ์ค๋ ๋์ง๋ง ๋ฉํฐ์ค๋ ๋์ฒ๋ผ ๋์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ฆ
๋น์ฉ์ด ๋น์ธ๊ณ ๋ณ๋ชฉํ์์ด ๋๋ ทํ ๊ฒฝ์ฐ์ ํ์ฉํ๋ ๊ฒ์ด ์ข์
'๐ฅ ์ฝ๋์ค์ฟผ๋ > ํ์ต์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ฒด์งํฅ์ ์๋ฏธ - ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด ๊ฐ์ (0) | 2021.05.26 |
---|---|
APi ํ๋ ์์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฐจ์ด (0) | 2021.03.15 |
์น ์ด๋ฒคํธ ์ง๊ธฐ ๋ง๋งํ ๋ (0) | 2021.02.18 |
๋๊ธ