Apache Tomcat 에서 gzip 압축 전송 설정
1. http 연결에서 설정
conf/server.xml 에서 Connector 를 찾아 다음과 유사하게 compression, compressibleMimeType, compressionMinSize 를 추가한다.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressibleMimeType="text/html,text/xml,application/xml,text/plain,text/css,text/javascript,application/javascript" compressionMinSize="2048" />
2. https 연결에서 설정
conf/server.xml 에서 UpgradeProtocol 를 찾아 다음과 유사하게 compression, compressibleMimeType, compressionMinSize 를 추가한다.
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="logiciel.kr" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" compression="on" compressibleMimeType="text/html,text/xml,application/xml,text/plain,text/css,text/javascript,application/javascript" compressionMinSize="2048" /> </Connector>
3. 관련 주제
3.1. Apache HTTPD 에서 설정
httpd.conf 에서 다음을 찾아 주석을 해제한다.
LoadModule deflate_module modules/mod_deflate.so
httpd.conf 에서 다음의 내용을 추가한다.
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/plain text/xml application/xml application/javascript text/xsl </IfModule>
3.2. 설정 확인
Firefox 에서
Web Console(Tools > Web Developer > Web Console
) 을 열고,
Network 탭을 클릭하고,
F5 를 눌러 웹페이지를 refresh 한 다음,
Transferred 와 Size 항목의 값이 다르면 gzip 압축 전송이 정상적으로 설정된 것이다.
Network 탭에서 항목을 클릭하여 Response Headers 의 Content-Encoding 을 확인할 수도 있다.
3.3. MimeType 에 대해서
MimeType 은 servlet 에서 다음과 같은 코드로 지정할 수 있다.
response.setContentType("text/xml; charset=UTF-8");
jsp 는 일반적으로 다음과 같다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
프로그램적으로 contentType 을 지정하지 않은 경우, Apache Httpd 이나 Tomcat 이 순수한 웹서버의 역활로서 .js .css .png .jpg 와 같은 파일들을 서비스하는 경우라면 파일 확장자에 의해 MimeType 을 결정한다.
Apache Tocmat 이라면 conf/web.xml 파일에 정의되어 있고, Apache Httpd 라면 conf/mime.types 파일에 정의되어 있다.
conf/web.xml 이나 conf/mime.types 파일을 열어 정확한 MimeType 을 확인하거나, 새로운 MimeType 을 추가할 수 있다.
3.4. 압축이 쓸데없는 파일들
- 파일크기가 너무 작으면, 압축파일의 헤더 때문에 파일크기가 더 커진다(Apache Httpd 서버는 compressionMinSize 에 대응하는 것이 없다).
- 이미 압축된 것은 압축파일의 헤더만 추가되어 파일크기만 더 커지는 결과가 된다.
압축의 기본적인 원리는 "11111111111111111111" 를 "1 20개" 로 변경하는 것이고, 압축파일의 헤더에 압축에 사용된 알고리즘 등의 정보를 넣는다는 사실을 상기하라.