원리 소개
HTTP 압축은 웹 사이트 탐색 속도를 크게 향상시킬 수 있습니다. 클라이언트가 서버에서 해당 리소스를 요청한 후 리소스 파일이 서버에서 압축된 다음 클라이언트의 브라우저가 압축 해제 및 탐색을 담당한다는 것입니다. . HTML, CSS, Javascript, Text 등의 일반적인 브라우징 프로세스와 비교하여 약 40%의 트래픽을 절약할 수 있습니다. 더 중요한 것은 CGI, PHP, JSP, ASP, Servlet, SHTML 등을 포함하여 동적으로 생성된 웹 페이지도 압축할 수 있으며 압축 효율성도 매우 높다는 것입니다.
구성 방법
Tomcat 5.0 이상 버전은 gzip 압축 형식을 사용하여 출력 콘텐츠 압축을 지원합니다.
%TOMCAT_HOME%/conf/server.xml을 수정하고 다음과 같이 노드를 수정합니다.
<Connector port="80" 프로토콜="HTTP/1.1" ConnectionTimeout="20000" RedirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8" 압축="on" 압축MinSize="50" noCompressionUserAgents="gozilla , traviata" 압축 가능한MimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
위 노드의 속성에서 알 수 있듯이 gzip 압축 기능을 사용하려면 Connector 노드에 다음과 같은 속성을 추가해야 합니다.
•compression="on"은 압축 기능을 켭니다.
•compressionMinSize="50" 압축 출력 콘텐츠 크기를 활성화합니다. 기본값은 2KB입니다.
•noCompressionUserAgents="gozilla, traviata" 다음 브라우저에 대한 압축을 비활성화합니다.
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 압축해야 하는 리소스 유형
시험방법
TOMCAT 압축 기능을 활성화한 후 압축이 효과적인지 어떻게 테스트합니까?
우선, Tomcat은 브라우저 요청 헤더의 accept-encoding을 기반으로 브라우저가 압축 기능을 지원하는지 여부를 결정합니다. 이 값에 gzip이 포함되어 있으면 브라우저가 gzip 압축 콘텐츠 탐색을 지원하는지 여부를 확인할 수 있습니다. 압축 기능은 Take effect입니다.
브라우저를 통한 직접 요청
누구나 브라우저를 통해 압축 구성이 활성화된 상태로 서버에 직접 접속한 후, 캡처된 데이터 패킷을 패킷 캡처 도구를 사용하여 볼 수 있습니다. 이해할 수 없는 내용이 많다면 압축 기능이 활성화된 것입니다.
프로그램을 통해 요청을 시뮬레이션하여 httpclient를 사용하여 간단한 테스트 프로그램을 작성합니다.
@Test public void testGzip() { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://localhost/admin.jsp") try { getMethod.addRequestHeader("accept-encoding", "gzip, 꺾다"); getMethod.addRequestHeader("user-agent","Mozilla/4.0(호환; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int result = httpClient.executeMethod(getMethod); { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html.getBytes().length); HttpException e) { e.printStackTrace() } catch(IOException e); e.printStackTrace() } 마지막으로 { getMethod.releaseConnection() } }
이 junit 프로그램을 실행하고 출력되는 내용을 확인하십시오. 출력 내용이 일부 왜곡되어 있고 인쇄된 내용의 길이가 실제 길이보다 훨씬 작다면 다른 확인 도구를 통해 구성이 적용되었음을 의미합니다. 웹사이트 검색 속도가 크게 향상될 것임을 확인하세요.
참고: 콘텐츠가 압축되지 않은 경우 압축MinSize 크기 조정을 고려할 수 있습니다. 요청된 리소스가 이 값보다 작으면 압축이 활성화되지 않습니다.