프론트엔드 개발자의 성능 최적화 <5편>

서동수·2023년 5월 12일

환경

CRA로 작업하는 경우 개발은 development 환경에서 수행하는데 여기에서 performance
Build하며 압축 등의 최적화 작업이 들어가지 않아 production으로 성능을 측정할 필요가 있어요.

손쉽게 production모드의 성능측정을 위해 npm serve를 사용할 수 있어요.

라이브러리 설치 후 package.json > scripts에 아래와 같은 명령어를 추가해요.

    "serve": "npm run build && node ./node_modules/serve/bin/serve.js -u -s build",
node ./node_modules/serve/bin/serve.js -u -s build: 
이 명령어는 빌드된 소스 코드를 로컬 웹 서버에서 실행시키는 역할을 합니다.

node 명령어는 Node.js 런타임을 실행시키는데, 
여기에 ./node_modules/serve/bin/serve.js는 serve 패키지의 실행 파일 경로를 의미합니다. 

-u 옵션은 압축하지 않는 설정입니다. 
-s 옵션은 싱글 페이지 애플리케이션을 위한 설정을 활성화합니다. 

build는 빌드된 소스 코드가 위치한 경로를 의미합니다.

완료되면 아래와 같이 결과를 확인할 수 있는데요.
localhost:5000으로 접속해 개발자도구 > Network에서 파일크기를 확인하면 줄어든 부분을 확인할 수 있어요.

텍스트 압축

아래 이미지에서 Enable text compression을 보도록 할게요.
텍스트를 압축해서 받으면 아래와 같은 기대를 할 수 있어요.

- 다운로드 시간 0.44s 감소

- 파일크기 > 절약크기
- 444.5 KiB > 286.9 KiB
- 152.4 KiB > 104.4 KiB
- 15.9 KiB > 10.4 KiB
- 3.8 KiB > 2.0 KiB

HTML, CSS, JS와 같은 텍스트 형태의 파일을 압축해 리소스를 줄여 빠르게 다운로드하고
사용하는 시점에 압축을 해제하는 방법을 사용합니다.

압축이 되어있는지 확인하는 방법은 개발자도구 > Network > 파일을 클릭하면
아래 이미지 처럼 Response Headers를 확인할 수 있는데요.
표시한 부분인 Content-Encoding 부분이 존재하지 않으면 압축하지 않은거에요.

🧤압축 방식🧤
Gzip, De-flate 2가지가 대표적인 압축방식 인데요.
Gzip은 여러가지 기법이 추가되고 내부적으로 De-flate방식을 사용하여 더 좋은 압축률을 보인다고 해요.

압축을 적용하고 다시 확인하면 Content-Encoding이 추가된 것을 확인할 수 있어요.

profile
devLog

0개의 댓글