Tomcat Compression은 콘텐츠 인코딩을 추가하지 않습니다 : 헤더의 GZIP

StackOverflow https://stackoverflow.com/questions/550024

  •  23-08-2019
  •  | 
  •  

문제

Tomcat을 사용하여 다음과 같은 HTML 컨텐츠를 압축하고 있습니다.

<Connector port="8080" maxHttpHeaderSize="8192"
maxProcessors="150" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="150" connectionTimeout="20000" disableUploadTimeout="true"
compression="on" compressionMinSize="128" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html"
URIEncoding="UTF-8" />

그러나 HTTP 헤더에서 (Yslow를 통해 관찰 된대로)

Content-Encoding: gzip

yslow 점수가 좋지 않습니다.

내가 보는 것은

HeadersPost
Response Headers
Server: Apache-Coyote/1.1
Content-Type:   text/html;charset=ISO-8859-1
Content-Language:   en-US
Content-Length: 5251
Date:   Sat, 14 Feb 2009 23:33:51 GMT

Apache Mod_JK Tomcat 구성을 실행 중입니다.

Tomcat으로 HTML 컨텐츠를 압축하고 헤더에 "Content-Encoding : Gzip"을 추가하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

살펴보십시오 http://sourceforge.net/projects/pjl-comp-filter/.

다른 사용자 정의 솔루션에는 메모리 누출이있을 수 있습니다.

또한 mod_jk를 사용하는 경우 해당 요청에 대해 8080 커넥터 (압축을 지원하는)를 사용하지 않습니다.

다른 팁

Tomcat은 압축을 할 것입니다. 그러나 당신이 사용하고 있기 때문에 mod_jk 포트에서 Tomcat 대신 포트 80에서 Apache를 통해 요청을 받고있는 것 같아요 8080. 실험으로 포트 8080을 통해 페이지를 얻은 다음 확인하십시오. yslow 올바른 헤더가 표시되어야합니다.

나는 Apache가 Tomcat을 통해 얻는 컨텐츠를 압축하고 있다고 생각합니다. mod_jk 그런 다음 디플레이트 된 컨텐츠를 브라우저로 전달합니다.

사용하려면 mod_jk 그런 다음 Tomcat 대신 Apache에서 압축을 설정해야합니다.

아마도 Tomcat이 언급하는 압축이 GZIP가 아닌가? 어둠 속에서 찌르지 만 흰색 공간 압축 또는 라인 트리밍과 관련이있을 수 있습니다.

나는 Tomcat이 이와 관련하여 조금 더 명백하다고 생각합니다 (여기서 희망).

우리는 응용 프로그램에서 Duffmo가 언급 한 GZIP 필터를 가지고 있습니다. web.xml은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd">

    <display-name>App-Web</display-name>

    <!-- FILTERS -->

    <!-- Gzip filter -->
    <filter>
        <filter-name>GZIPFilter</filter-name>
        <filter-class>weblogicx.servlet.gzip.filter.GZIPFilter</filter-class>
    </filter>

    [snip]    
</web-app>

J2EE 웹 응용 프로그램의 전반적인 클라이언트 측면 성능을 향상 시키려면 WebUtilities Java 라이브러리를 사용해 볼 수 있습니다.

여기 링크가 있습니다 :: http://code.google.com/p/webutilities/.

필터, 태그, 서블릿 구성 요소를 제공하여 다양한 클라이언트 측면 성능 사례를 적용하여 PagesPeed/Yslow에 대한 성능 등급이 높아집니다.

버전 0.0.4 이후에는 성과 관행을 따르는 데 도움이됩니다.

  1. HTTP 요청 최소화 - 한 번의 요청에서 여러 JS/CSS 파일을 제공 할 수 있습니다.
  2. 클라이언트 측 캐싱 - 적절한 캐시 제어 추가, 헤더가 만료됩니다.
  3. 즉, JS/CSS 미니 화 - Yuicompressor 사용
  4. 압축 - GZIP/deflate/compress 인코딩의 2way 압축 지원
  5. 서버에서의 응답 캐싱 - 변경되지 않은 리소스의 재 처리를 피하기 위해
  6. 문자 인코딩 추가 - 브라우저에게 미리 알리기 위해

또한 MIME, URL 또는 사용자 에이전트에 대한 구성 가능/사용자 정의입니다.

여기에서 Tomcat 문서를 살펴 보았습니다.http://tomcat.apache.org/tomcat-5.5-doc/config/http.html

사용을 언급합니다 compression="force" 그것은 나를 위해 일했다. 또한 a를 설정할 수 있다고 말합니다 minimum number. 이것은 나를 위해 잘 작동했습니다

<Connector port="8080" compression="256000" />

(256KB 이상의 압축)

기본값 compressableMimeType 그 속성이 필요하지 않다는 것을 의미했습니다. 또한 나열되지 않습니다 CompressionMinSize 기인하다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top