Apache – Enable mod_deflate to send Content-Encoding: gzip

apachedeflatemod-deflate

EDIT I have found that the problem is actually php minify. This was sending the deflated content instead of Apache. I'll find more on this.

According to High Performance Web Sites, if I enable mod_deflate in Apache 2.x, by adding the following line, it should send gzipped/delfated content: –

AddOutputFilterByType DEFLATE text/html text/css application/x-javascript

The book also says that gzip is more effective than deflate.

I have enabled in httpd.conf by adding the same line. But Apache sends Content-Encoding: deflate.

I tested with CURL using: –

curl -i -H "Accept-Encoding: gzip" "http://192.168.1.33/s.js" >> e:\curl_log.txt

It returns 'gzipped' content. But when I send the command: –

curl -i -H "Accept-Encoding: gzip, deflate" "http://192.168.1.33/s.js" >> e:\curl_log.txt

It returns 'deflated' content.

So, if the browser supports both deflated and gzipped, Apache send deflated. How to tell Apache to prefer gzip over deflate?

FYI: –

Best Answer

As I see the cause was already found. To further on help getting out of possible confusions:

  • mod_deflate despite its name is currently only supporting gzip.

  • gzip is more "effective" because of the following

deflate - despite its name the zlib compression (RFC 1950) should be used (in combination with the deflate compression (RFC 1951)) as described in the RFC 2616. The implementation in the real world however seems to vary between the zlib compression and the (raw) deflate compression[3][4]. Due to this confusion, gzip has positioned itself as the more reliable default method (March 2011).

gzip and zlib are file/stream formats that by default wrap around deflate and amongst other things add a checksum which make them more secure and a little slower. The increase in size on the other hand should not be of any concern.

Also see HTTP_compression - Wikipedia

Related Topic