web-dev-qa-db-ja.com

mod_deflate-ほとんどのブラウザーに最適な構成

ここで誰かがApacheでmod deflateを使用するための最適な標準構成を決定するのに役立つかどうか疑問に思っていました。基本的に、mod_deflateは、すぐに開始するために次の構成を使用することをお勧めします。

数種類のみを圧縮

AddOutputFilterByType DEFLATE text/html text/plain text/xml http://httpd.Apache.org/docs/2.0/mod/mod_deflate.html

ただし、ドキュメントを読むだけで、そこにあるすべてのブラウザに対してこれをカスタマイズできます。さらに、あらゆる種類のMIMEタイプに合わせてmod_deflateをカスタマイズできます。誰かがこれらの設定を試してみて、すべてのブラウザに最適な設定を見つけたのではないかと思いました。

Apacheが提供するもう1つの例ですが、すべての構成オプションを理解していない場合は使用しないように言及します。

<Location />
# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>

http://httpd.Apache.org/docs/2.0/mod/mod_deflate.html

ほとんどの構成設定を理解しているので、同様の設定を行いたいと思います。すでに圧縮されている画像やその他のメディアの圧縮は避けてもかまいません。私が問題を抱えている詳細は、Chrome、Firefox、IE、Operaなどのさまざまなブラウザーすべてでこれがどのように反応するかを理解していることです。明らかに、Netscape 4.Xには関係ありません。誰かがこれをすべてテスト済みで、この基準を満たす適切な設定を推奨できるといいのですが。

つまり、ドキュメントの推奨設定を使用するだけで問題ない場合は、問題ありませんが、念のため確認したいと思います。

いくつかの追加の詳細を提供するだけです。私たちはすべてのWebサービスのフロントとしてApacheを使用しています。例:confluence、git、gitwebなど...

Tomcatおよびその他のサービスはApache経由でプロキシされるため、virtualhosts、mod_proxy w/AJP、mod_sslの構成があります。

私の会社には専任のITチームがいないので、余暇にこれの多くを準備する必要があります。私はあなたが提供できる任意の入力に感謝します。

それで、私が尋ねていることを明確に述べるために、Apacheからメインストリームブラウザへの要求に応える必要がある基本的なコンテンツを処理するための最適な構成は何ですか?

これまでの私の基本的なコンテンツタイプのリスト:

  • text/html
  • テキスト/プレーン
  • text/xml
  • テキスト/ x-js
  • テキスト/ JavaScript
  • テキスト/ css
  • application/xml
  • application/xhtml + xml
  • application/x-javascript
  • アプリケーション/ JavaScript
  • application/json

明らかに圧縮する必要がないタイプ:

  • 画像-gif、jpg、png
  • アーカイブ-exe、gz、Zip、sit、rar
7
Jason Huntley

私は先に進んでこれを調査しました。複数のチュートリアルとApacheのドキュメントを読んだ後、私はかなりの何かをつなぎ合わせることができました。上記のリストを使用して、主流のコンテンツタイプで圧縮を処理するように見える一連のルール/宣言をまとめました。

<Location />
# Insert filter
SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css 
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/x-javascript application/javascript
AddOutputFilterByType DEFLATE application/json

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

SetEnvIfNoCase Request_URI \
    \.(?:exe|t?gz|Zip|bz2|sit|rar)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

</Location>

テストでは、基本的にFirefoxにはTamperDataを使用し、Apacheにはdeflateロギングをオンにしました。

https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

Apacheの場合、以下を追加します。

# For Testing Purposes
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

http://httpd.Apache.org/docs/2.0/mod/mod_deflate.html#deflatefilternote

8
Jason Huntley