Contents Compression이란?

Contents Compression(컨텐츠 압축)이란 서버와 클라이언트간 통신에서 전송되는 데이터 크기를 줄일 수 있으며, 그로 인해 서비스 제공 속도를 향상시켜 서비스 품질을 향상시킬 수 있는 기술입니다.

Gzip 설정

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를 지정해주는 것

Gzip 설정 실험

느린3G 빠른3G
gzip on(default) 1 2
gzip on(level:3) 3 4
gzip on(level:6) 5 6

(시험환경 : 캐시 사용 중지와 시크릿 탭)

1 : gzip on(default) && 느린3G

(map만 compared level 1로 적용이 된 상태이고, text/css와 application/javascript는 적용이 되지 않은 상태)

Untitled

2: gzip on(default) && 정상

Untitled

3 : gzip on(level: 3) && 느린 3G

Untitled

4 : gzip on(level: 3) && 정상

Untitled

5 : gzip on(level: 6) && 느린 3G

Untitled

6: gzip on(level: 6) && 정상

Untitled