Tomcat 圧縮ではコンテンツ エンコーディングが追加されません:ヘッダー内の 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」がヘッダーにありますか?

役に立ちましたか?

解決

// sourceforgeの

の<のhref = "HTTPを見てください.NET /プロジェクト/ PJL-COMP-フィルタ/」REL = "nofollowをnoreferrer"> http://sourceforge.net/projects/pjl-comp-filter/ の

他のカスタムソリューションは、メモリリークを持っていることがあります。

また、あなたは、あなたは確かにそれらの要求のために(圧縮をサポートしています)8080コネクタを使用していないのmod_jkを使用している場合。

他のヒント

Tomcatは圧縮をやってます。あなたがmod_jkを使用しているので、しかし、私はあなたがあなたのポート8080上のポート80ではなくTomcatでのApacheを経由して要求を取得していると思います。実験として、ポート8080を経由してあなたのページを取得し、その後、あなたは正しいヘッダが表示されるはずですyslowをチェックしてみます。

私は何が起こっていることは、Apacheが、それはmod_jk経由でのTomcatから取得し、ブラウザへの収縮したコンテンツを渡しているコンテンツを解凍していることだと思います。

あなたがmod_jkを使用したい場合は、

あなたは、Apache Tomcatのではなく、上の圧縮を設定する必要があります。

おそらく、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 Web アプリケーションの全体的なクライアント側のパフォーマンスを向上させるには、WebUtilities Java ライブラリを試すことができます。

リンクは次のとおりです:: http://code.google.com/p/webutilities/.

フィルター、タグ、サーブレット コンポーネントを提供し、クライアント側のさまざまなパフォーマンス手法を適用して、PageSpeed/YSlow に対するパフォーマンス評価を向上させます。

バージョン 0.0.4 以降、次のパフォーマンスの実践に役立ちます。

  1. HTTP リクエストを最小限に抑える - 1 つのリクエストで複数の JS/CSS ファイルを提供できます
  2. クライアント側キャッシュ - 適切な Cache-Control、Expires ヘッダーを追加します。
  3. オンザフライの JS/CSS 縮小 - YUICompressor を使用
  4. 圧縮 - gzip/deflate/compress エンコーディングの 2way 圧縮をサポートします。
  5. サーバーでの応答キャッシュ - 変更されていないリソースの再処理を避けるため
  6. 文字エンコーディングを追加 - ブラウザに事前に知らせるため

また、MIME、URL、またはユーザー エージェントに対する高度な構成/カスタマイズも可能です。

私は、ここでは、Tomcatのドキュメントを見ていました: http://tomcat.apache.org/tomcat-5.5-doc/設定/ http.htmlする

これは私のために働いcompression="force"を使用して言及しています。また、あなたがminimum numberを設定することができますと言います。これは私のためにうまく働いた。

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

(256KBを超えるものを圧縮)

compressableMimeTypeのデフォルト値は、私はその属性を必要としなかったことを意味しました。 また、それはCompressionMinSize属性が表示されないことに注意します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top