Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

Apache Tomcat 에서 gzip 압축 전송 설정

제목

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. 압축이 쓸데없는 파일들

  1. 파일크기가 너무 작으면, 압축파일의 헤더 때문에 파일크기가 더 커진다(Apache Httpd 서버는 compressionMinSize 에 대응하는 것이 없다).
  2. 이미 압축된 것은 압축파일의 헤더만 추가되어 파일크기만 더 커지는 결과가 된다.

압축의 기본적인 원리는 "11111111111111111111" 를 "1 20개" 로 변경하는 것이고, 압축파일의 헤더에 압축에 사용된 알고리즘 등의 정보를 넣는다는 사실을 상기하라.

제목

첨부파일