🚩 최적화
- 주어진 조건으로 최대 효율을 낼 수 있도록 하는 것
- 컴퓨터공학에서는 최소한의 리소스로 가능한 한 빠르게 원하는 결과를 얻을 수 있도록 하는것
- 웹 개발에서는 주어진 조건안에서 최대한 빠르게 화면을 표시하는것
🧩 최적화 필요성
- 이탈률 감소 : 로딩 3초이상이면 반이상 사이트를 이탈함
- 전환율 증가 : 웹사이트 방문자중 회원가입, 구매 등 행위를 한 방문자의 비율을 의미함
- 수익 증대 : 빠른 웹사이트는 수익을 증대시킨다
- 사용자경험(UX) 향상 : 최적화는 UX를 개선시킨다.
🧩 최적화 기법
🚩 캐시
- 캐시 : 다운받은 데이터나 값을 미리 복사해 놓는 임시 장소
- 예를들어 똑같은 이미지를 두번 다운로드 받을때 캐시를 저장해놓으면 HTTP헤더 용량만 전송해서 리소스를 아낀다.
🚩 트리셰이킹
- 나무를 흔들어 가지를 털어내듯 불필요한 코드를 제거하는 것
- 파일크기를 줄이면 최적화에 도움이 됨
- js파일은 cpu빨을 많이받아서 모바일환경에서 느려짐
🧩 JS 트리셰이킹
- 필요한 모듈만 import 하기
import React from 'react'하면 다 불려와진다. {useState}같이 쓸것만 가져올것
- Babelrc파일 설정하기
- 다음과같이 코드를 설정하면 ES5로 변환되는걸 방지함
{
“presets”: [
[
“@babel/preset-env”,
{
"modules": false
}
]
]
}
- sideEffects 설정하기
- 웹팩은 사이드 이펙트를 일으킬 수 있는 코드의 경우, 사용하지 않는 코드라도 트리쉐이킹 대상에서 제외됨
- package.json파일에서 sideEffects를 설정하여 특정파일에서는 발생하지 않을것임을 알려줄 수 있음
{
"name": "tree-shaking",
"version": "1.0.0",
"sideEffects": ["./src/components/NoSideEffect.js"]
}
- ES6 문법을 사용하는 모듈 사용하기
🚩Lighthouse
- 크롬 개발자도구에서 선택할수 있는 웹페이지 퍼포먼스 검사 툴, 어떤 웹페이지든 검사가능