Contents Compression(컨텐츠 압축)이란 서버와 클라이언트간 통신에서 전송되는 데이터 크기를 줄일 수 있으며, 그로 인해 서비스 제공 속도를 향상시켜 서비스 품질을 향상시킬 수 있는 기술입니다.
nginx.conf의 http 블럭 안에서 설정을 해주면 됩니다. Nginx를 처음 설치할 때 default로 gzip on이 되어 있기 때문에 gzip default 설정에서 변화를 주었습니다. 압축 정도를 다음 블로그를 참고해 압축률과 속도의 trade-off를 고려하여 6으로 주었고, html, css, javascript인 정적 파일들에 대해서 gzip을 적용하였습니다.
http{
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
#gzip_proxied any;
gzip_comp_level 6;
#gzip_buffers 16 8k;
#gzip_http_version 1.1;
gzip_types text/html text/css application/javascript text/javascript;
}
각 설정들이 의미하는 바와 default 설정 값은 아래와 같습니다.
gzip on; // gzip을 적용할지 안할지 결정한다
gzip_min_length 20; // "Content-Length”를 기준으로 gzip을 적용할 최소 응답 길이이다
gzip_vary off; // “Vary: Accept-Encoding”을 응답에 넣을지 넣지 않을지 결정한다.
gzip_proxied off; // 프록시에서 요청하는 등의 특정 상황에 따라 동작 유무를 설정한다.
gzip_comp_level 1; //압축의 정도를 설정, 1~9 사이 설정이 가능하고 높을수록 압축율이 큰 대신 속도가 느려진다.
gzip_buffers 16 8k; // 버퍼의 숫자(앞)와 크기(뒤)를 결정한다.
gzip_http_version 1.1; // http version으로 nginx에서 version을 자동으로 감지한다.
gzip_types text/html; // text/html외의 gzip을 적용할 특정 MIME types을 지정한다.
gzip_disable regex ...; //gzip을 사용하지 않을 browser를 지정해주는 것
느린3G | 빠른3G | |
---|---|---|
gzip on(default) | 1 | 2 |
gzip on(level:3) | 3 | 4 |
gzip on(level:6) | 5 | 6 |
(시험환경 : 캐시 사용 중지와 시크릿 탭)
(map만 compared level 1로 적용이 된 상태이고, text/css와 application/javascript는 적용이 되지 않은 상태)