안녕하세요.
오늘은 프론트엔드의 로딩 성능을 최적화하는 방법에 대해 알아보도록 하겠습니다.
(네이버의 TECH CONCERT 자료를 참고하여 작성했습니다.)
개발자 도구의 Network 탭을 활용하여 웹 페이지의 로딩 속도를 측정하고 분석할 수 있습니다.
NAVER 사이트로 예를 들어보겠습니다.
위 그림의 오른쪽에 위치한 Waterfall이라는 것이 성능 개선 작업에서 가장 중요한 지표입니다.
이 Waterfall의 높이를 줄이고, 폭을 줄이고, 간격을 줄이는 것으로 로딩 속도를 개선할 수 있습니다.
1. 높이 줄이기 : Request 수 줄이기
브라우저는 호스트당 동시에 연결할 수 있는 Connection수가 정해져 있습니다.
그 수를 넘어가게 되면 대기시간이 발생하기 때문에, Request 수를 줄이는 것이 로딩 성능을 개선하는데 도움이 됩니다.
Request 수를 줄이기 위한 방법
: CSS나 JS 파일을 Merge 하여 하나의 파일로 만든다.
: 여러 이미지를 하나의 Request로 받는다. (CSS Sprite 사용)
: 캐싱되지 않아도 될 이미지를 HTML 요청에 포함시켜서 보낸다. (DATA URI 사용)
: 초기 로딩 시에 불필요한 자원은 삭제하거나 Lazy loading 한다.
2. 폭 줄이기 : Request 시간 줄이기
아래 이미지는 Request 시간의 상세 정보이며, 이를 통해 개선 포인트를 찾아낼 수 있습니다.
Initial Connection
: Initial Connection 시간을 줄이기 위해서는 HTTP/2.0을 적용해야 합니다.
HTTP/2.0은 Multiplexing을 지원하여 하나의 Connection에 여러 요청을 보낼 수 있습니다.
Waiting (TTFB - Time To First Byte)
: Request를 받아서 처리한 시간을 말하며, TTFB 소요 시간이 길다면 서버 로직의 튜닝이 필요한 것을 뜻합니다.
Content Download
: 네트워크 속도가 낮거나, 콘텐츠의 크기가 큰 경우도 로딩 시간에 큰 영향을 미칩니다.
js나 css 파일을 압축시키거나, 이미지 파일을 최적화하여 콘텐츠의 크기를 줄이는 것이 중요합니다.
3. 간격 줄이기 : Request 계단 간격 당기기
Blocking을 줄이는 방법으로 Request 간격을 당겨 로딩 시간을 줄일 수 있습니다.
Blocking을 줄이는 방법
: head 태그에는 css와 필수 js만 넣는다.
: JS는 body 태그의 마지막에 넣는다. (중간중간에 js 코드를 넣지 않는다.)
: Preload를 사용하여 CSS와 함께 폰트, 이미지를 로딩한다.
출처
https://www.youtube.com/watch?v=cpE1dwJgS4c
'Web' 카테고리의 다른 글
[Web] Web Worker 웹 워커 (0) | 2022.04.25 |
---|---|
[Web] REST API (0) | 2022.04.23 |
Cookie vs localStorage (0) | 2022.01.05 |
Polyfill 이란? (0) | 2021.12.22 |
URL을 입력하면 일어나는 일 (0) | 2021.12.09 |