에셋 파일들을 gzip으로 압축하여 전달하기
2025. 3. 7.
Vercel, Netlify, AWS CloudFront 등의 CDN을 사용하는 경우 별도의 처리를 하지 않아도 서비스에서 gzip 압축을 지원한다. 하지만 위와 같은 서비스를 사용하지 않는 경우, 웹 서버를 통해 에셋을 gzip으로 압축하거나 gzip 파일을 서빙하도록 설정해야 한다.
레거시 프로젝트에 에셋을 gzip으로 전달하도록 했더니 페이로드가 총 4.3MB -> 1.16MB 로 약 73%로 줄어든 것을 확인할 수 있었다.
Nginx에서 gzip 압축 적용
nginx.config 파일에 다음과 같이 gzip 설정을 추가할 수 있다.
http {
gzip on; # gzip 활성화
gzip_types text/plain text/css text/javascript; # 압축할 파일 타입
gzip_min_length 1024; # 1KB 이상인 파일만 압축
gzip_comp_level 9; # 압축 수준 (1~9, 높을수록 CPU 사용량 증가)
}
Webpack, Vite에서 gzip 압축 적용
CompressionWebpackPlugin, VitePluginCompression 등의 플러그인을 사용하여 빌드시 에셋 파일들을 gzip으로 압축할 수 있다.
server {
listen 80;
server_name blog.minjong.dev
# ...
# gzip 파일 서빙 설정
location ~* \.(js|css|html|svg)$ {
gzip_static on;
add_header Cache-Control "public, max-age=31536000";
add_header Content-Encoding gzip;
}
}