Early Riser
생각정리
Early Riser
전체 방문자
오늘
어제
  • 분류 전체보기 (128)
    • JS (19)
    • React (33)
    • React Native (2)
    • Library, Tool (13)
    • CSS (2)
    • Algorithm (40)
    • Computer Science (3)
    • 회고 (3)
    • AI (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 부스트캠프 9기
  • 논문리뷰
  • boosting
  • 비동기
  • RNN
  • BFS
  • 파이썬
  • 완전탐색
  • 백준
  • javascript
  • lightgbm
  • global minima
  • js
  • 백트래킹
  • useState
  • react
  • 딥러닝
  • 손실함수
  • local minima
  • 자바스크립트
  • 부스트캠프 합격 후기
  • 구현
  • 밑바닥
  • 오늘의불경
  • useEffect
  • LGBM
  • 알고리즘
  • dfs
  • 부스트캠프 합격
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Early Riser

생각정리

Library, Tool

웹 성능을 높일 수 있는 bundler plugins

2024. 9. 11. 15:58

 웹 프론트엔드 성능 최적화는 사용자 경험과 직결되며, 로딩 속도가 느려지면 사용자 이탈률이 증가할 수 있다. 이를 해결하기 위해 웹 애플리케이션을 최적화하는 방법 중 하나는 번들러 플러그인들을 활용하는 것이다. 이번 글에서는 웹 프론트엔드 성능을 높일 수 있는 몇 가지 주요 번들러 플러그인들을 소개하고자 한다.

1. Imagemin-pngquant

 이미지 파일은 웹사이트 로딩 속도에 큰 영향을 미친다. 특히, PNG 파일은 고화질을 유지하는 만큼 용량이 커질 수 있다. 이를 줄이기 위해 사용하는 플러그인 중 하나가 imagemin-pngquant이다. 이 플러그인은 PNG 파일의 크기를 줄이면서도 이미지 품질을 최대한 유지해주는 역할을 한다.

  • 주요 기능:
    • PNG 파일의 무손실 또는 저손실 압축
    • 이미지 품질을 사용자가 설정할 수 있어, 압축 정도를 조정할 수 있다.
    • 최적화된 이미지를 통해 페이지 로딩 시간을 단축한다.

 이미지 최적화는 웹 프론트엔드 성능을 높이는 중요한 요소 중 하나이며, imagemin-pngquant는 이미지 압축에 효과적인 도구이다.

2. Webpack-bundle-analyzer와 지연 로딩(Lazy Loading)

 번들 크기가 커질수록 웹 페이지의 초기 로딩 속도가 느려지므로 이를 최적화하는 것이 중요하다. 이때 webpack-bundle-analyzer는 번들 파일을 시각적으로 분석하여 어느 모듈이 큰 용량을 차지하는지 보여주는 플러그인이다. 이를 통해 리소스를 최적화하고, 지연 로딩을 적용할 수 있다.

  • 주요 기능:
    • 번들 크기 시각화로 분석된 데이터를 통해 불필요한 모듈을 제거 가능
    • 특정 모듈을 지연 로딩(Lazy Loading)으로 처리하여 초기 로딩 속도를 개선
    • 초기에는 필요한 리소스만 로딩하고, 나머지는 사용자가 요청할 때 로딩하는 방식으로 최적화

 이를 통해 webpack-bundle-analyzer는 번들 크기를 분석하고, 그 결과를 바탕으로 지연 로딩을 적용하여 웹 성능을 크게 향상시킬 수 있다.

3. TerserWebpackPlugin

 자바스크립트 파일을 최적화하고 성능을 높이기 위해 코드 난독화와 압축은 필수적인 과정이다. TerserWebpackPlugin은 자바스크립트 코드를 압축하고 난독화하여 파일 크기를 줄이는 플러그인이다.

  • 주요 기능:
    • 자바스크립트 코드를 최적화해 불필요한 공백, 주석, 긴 변수명을 제거하여 파일 크기를 최소화
    • 난독화를 통해 코드를 보안상 안전하게 보호할 수 있다
    • 번들 파일 크기를 줄여 로딩 속도를 높인다

 이 플러그인은 자바스크립트 파일을 작게 유지하여 브라우저에서 빠르게 다운로드할 수 있도록 돕는다.

4. CompressionWebpackPlugin

 서버로부터 전송되는 파일을 압축하는 방법을 사용하면 성능을 더욱 향상시킬 수 있다. CompressionWebpackPlugin은 번들 파일을 gzip과 같은 압축 형식으로 압축하여 서버 전송 속도를 높여주는 플러그인이다.

  • 주요 기능:
    • gzip, brotli 등의 압축 알고리즘을 사용해 번들 파일을 압축
    • 압축된 파일을 클라이언트에 전송함으로써 네트워크 트래픽을 줄이고 페이지 로딩 시간을 개선
    • 서버와 클라이언트 간의 데이터 전송 효율을 극대화할 수 있다

 압축된 파일을 전송하면 페이지 로딩 속도는 물론, 네트워크 비용도 절감할 수 있다.

5. ExtractCSS

 웹 프론트엔드에서 자바스크립트와 CSS가 하나의 파일로 번들링될 경우, 불필요한 코드가 포함되어 파일 크기가 증가할 수 있다. 이를 방지하기 위해 CSS를 별도의 파일로 추출하는 것이 extractCSS 플러그인의 역할이다.

  • 주요 기능:
    • CSS를 별도의 파일로 추출하여, 자바스크립트와 분리된 상태로 관리 가능
    • 브라우저가 CSS를 별도로 캐싱할 수 있어 성능 향상
    • 초기 렌더링 시 필요한 CSS만 로드하여 로딩 시간을 줄인다

 CSS 파일을 분리해 관리하면 브라우저의 캐싱 전략이 더 효율적으로 작동할 수 있어, 웹사이트 성능에 긍정적인 영향을 미친다.

6. PurgeCSS

 TailwindCSS와 같은 CSS 프레임워크는 많은 CSS 클래스들을 포함하고 있는데, 사용되지 않는 클래스도 함께 번들링될 가능성이 크다. PurgeCSS는 이러한 사용되지 않는 CSS를 제거하는 데 효과적이다. TailwindCSS에서는 기본적으로 이 플러그인이 적용되며, 불필요한 CSS를 제거하여 최적화된 파일 크기를 유지한다.

  • 주요 기능:
    • 사용되지 않는 CSS 코드 제거
    • 파일 크기를 줄이고 로딩 시간을 단축
    • TailwindCSS와 같은 프레임워크와 결합하여 더욱 효율적인 성능을 발휘

 PurgeCSS는 CSS 프레임워크를 사용할 때 필수적인 도구로, 최적화된 스타일 파일을 제공한다.

'Library, Tool' 카테고리의 다른 글

TypeScript: type과 Interface의 차이  (4) 2024.11.04
Frontend에서의 Bundler  (0) 2024.09.25
Git의 동작원리  (0) 2024.07.15
CSS Framework들의 특징과 장단점 비교 (tailwind, styled-componets)  (0) 2024.07.09
Recoil 사용이유와 사용방법  (1) 2024.01.08
    'Library, Tool' 카테고리의 다른 글
    • TypeScript: type과 Interface의 차이
    • Frontend에서의 Bundler
    • Git의 동작원리
    • CSS Framework들의 특징과 장단점 비교 (tailwind, styled-componets)
    Early Riser
    Early Riser
    2년차 프론트엔드 개발자입니다. https://github.com/EarlyRiser42

    티스토리툴바