Tomcat 圧縮ではコンテンツ エンコーディングが追加されません:ヘッダー内の gzip
質問
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」がヘッダーにありますか?
他のヒント
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 以降、次のパフォーマンスの実践に役立ちます。
- HTTP リクエストを最小限に抑える - 1 つのリクエストで複数の JS/CSS ファイルを提供できます
- クライアント側キャッシュ - 適切な Cache-Control、Expires ヘッダーを追加します。
- オンザフライの JS/CSS 縮小 - YUICompressor を使用
- 圧縮 - gzip/deflate/compress エンコーディングの 2way 圧縮をサポートします。
- サーバーでの応答キャッシュ - 変更されていないリソースの再処理を避けるため
- 文字エンコーディングを追加 - ブラウザに事前に知らせるため
また、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
属性が表示されないことに注意します。