Apache 2でHTTP圧縮を有効にするにはどうすればよいですか?


回答:


8

これにはdeflateモジュールが必要なので、有効にします。Ubuntu(私が使用しているもの)では、そのためのコマンドはa2enmod deflateです。

次に、or ディレクティブで使用SetOutputFilterします。ProxyDirectory

<ProxyMatch "^http://localhost:8080/($|app/)">
    Order allow,deny
    Allow from all
    SetOutputFilter Deflate
</ProxyMatch>

または:

<Directory /var/www>
    Order allow,deny
    Allow from all
    SetOutputFilter Deflate
</Directory>

1
他のディストリビューションの場合、「LoadModule deflate_module /path/to/module/mod_deflate.so」を使用してモジュールをロードします-良い答えには数セントだけです。

4

ノートにリンクするWikipediaエントリとして、mod_deflateまたはmod_gzipを使用できます。ここで、私が使用しているmod_gzipの例を参照してください。


1
<VirtualHost *:80>
   ...     
   DeflateBufferSize 16384
   DeflateCompressionLevel 5
   DeflateMemLevel 9
   DeflateWindowSize 15

   <Location / >
      AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript
   </Location>
   ...
</VirtualHost>

1

デプロイに応じて、これをconf.dまたはextrasフォルダーにmod_deflate.confとして配置します。

# Enable mod_deflate (gzip)
    SetOutputFilter DEFLATE
    # Do not attempt to compress the following extensions
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png|swf|flv|zip|gz|tar|mp3|mp4|m4v)$ no-gzip dont-vary

Apacheを再起動すると、上記の正規表現に一致しないすべての拡張機能でmod_deflateが発生します。これにより、(ほとんどが圧縮されているため)圧縮がほとんどまたはまったくないフォーマットをmod_deflateが圧縮しようとしないため、全体的なCPUオーバーヘッドが削減されます。

正確に何が圧縮されているか、および圧縮率を確認するには、これを

# Deflate accurate logging
    DeflateFilterNote Input instream
    DeflateFilterNote Output outstream
    DeflateFilterNote Ratio ratio
    LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
    CustomLog logs/yourdomain_deflate.log
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.