* GZIP 이란?
Gzip 은 GNU zip 의 줄임말이며 리눅스/유닉스 시스템에서 널리쓰이는 압축 소프트웨어 이다. 웹서버 통신을 할 떄 데이터를 gzip 압축하여 전송하면 속도가 더 빨라진다.
* gzip 사용 안할 경우 : [서버에서 HTML 데이터 전송] -> [클라이언트 브라우저가 표시]
* gzip 을 사용할 경우 : [서버에서 HTML 데이터를 압축 후 전송] -> [클라이언트 브라우저가 압축을 풀고 표시]
gzip 을 사용할 경우, 웹서버와 클라이언트(브라우저)의 CPU 사용량이 약간 늘어난다. 요즘 서버나 PC의 경우 충분히 고사양이기 때문에 gzip cpu 사용량은 무시해도 된다.(0.1% 미만)
압축 전송이기 때문에 전송속도가 빨라지고 , 트래픽량이 줄어든다. 특히, 국가간 트래픽이나 느린 인터넷 환경에서, 속도가 빨라진 것을 크게 느낄 수 있다.
너무 작은 파일은 그냥 전송하는게 더 빠르고, 이미 충분히 압축된 파일은 gzip 을 해도 용량이 별로 안줄어들기 때문에 gzip 압축 전송을 안 쓰는 것이 좋다.
적당한 크기의, 압축 효율이 있을만한 것들에 대해서 압축 전송을 사용하는 것이 좋다.
따라서 다음과 같이 최소 파일크기 제한 및 파일타입 제한을 두는 것이다.
항상, 텍스트 데이터는 압축효율이 좋다.
일반적으로, 바이너리 데이터는 압축효율이 좋지 않다. 압축 후 데이터 크기가 더 커질 수 있다.
Image, video, pdf, zip 등은 이미 충분히 압축된 바이너리 파일이므로 gzip 을 적용하면 안된다. (데이터 크기가 줄어든다는 보장이 없고, 불필요한 압축 & 해제 단계가 추가된다. 당연한 이야기지만 데이터 사이즈가 커질수록 cpu 사용량이 늘어난다. )
* 환경설정
# vi /etc/nginx/nginx.conf
#gzip on; 을 찾아서 다음과 같이 바꾼다.
[code title="/etc/nginx/nginx.conf" language="bash"]
#gzip on;
gzip on;
gzip_min_length 10240;
gzip_buffers 32 32k;
gzip_comp_level 9;
gzip_types text/plain application/x-javascript text/xml text/css application/json;
gzip_vary on;
# end gzip configuration
[/code]

10KB 이상인 파일이고, type 이 text/plain application/x-javascript text/xml text/css 에 대해서 압축 전송 실시한다.
압축 단계는 1~9 단계를 설정할 수 있는데, 아주 많은 테스트를 한 결과 9 단계가 항상 좋은 결과를 나타내더라.
무조건 9단계의 압축을 사용하도록 하자.
다른 사람의 가이드 글을 더 검색을 해봤는데 압축단계는 6 아니면 9 로 하더라. 본인 체감상 더 빠른것을 선택하면 된다. 아무튼 제 추천은 9단계.
크롬 개발자도구 켜고 Network 탭에가서 효율을 살펴보자.

< 같은 페이지를 gzip 을 사용해서 트래픽을 90% 낮춘 예제 >
Conversation
In the margins
0 notes
No comments yet. Be the first to leave a note.