mod_gzip was done by third part while mod_deflate comes from the apache httpd group (methinks).
Here's what I did to deliver compressed contents to browsers who'd accept them.
Nothing to be done on zope. Zope just need to churn out the contents. Nothing needed on squid too.
On apache, add the following in httpd.conf. These are actually from the manual with some tweaks.
Check the comments for what some of the directives do.
#enable deflate on select contents
#AddOutputFilterByType DEFLATE text/html text/plain text/xml
#or enable on all
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
#this to make sure squid cache accordingly. but
#will it? we'll see in a couple of days
Header append Vary User-Agent env=!dont-vary
#compression level (1-9)
DeflateCompressionLevel 3
#logging
#DeflateFilterNote ratio
#LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
#CustomLog logs/deflate_log deflate
#or accurate logging
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) "%{User-agent}i"' deflate
CustomLog logs/deflate_log deflate
Here's the deflate_log. Some contents are compressed while others are not. Good? Probably.
"GET /location/some.css HTTP/1.0" 1325/8775 (15%)
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
"GET / HTTP/1.0" 4442/18294 (24%) "Mozilla/4.0 (compatible; MSIE
5.01; Windows 98)"
"GET /location/some.gif
HTTP/1.0" -/- (-%) "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
"GET /location/someother.gif
HTTP/1.0" -/- (-%) "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
"GET /location/some.js HTTP/1.0" -/- (-%) "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.0)"
"GET /location/someother.css HTTP/1.0" 964/4824 (19%)
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
"GET /location/other.gif
HTTP/1.0" -/- (-%) "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
"GET /location/someother.css HTTP/1.0" 964/4824 (19%)
"Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)"
"GET /location/somecontent
HTTP/1.0" 3078/8568 (35%) "Mozilla/5.0 (compatible; Yahoo! Slurp;
http://help.yahoo.com/help/us/ysearch/slurp)"
If we look closely, the same contents are requested again by squid for different agents. So, the directive to check for user agents does work since squid never cache the same contents for different agents.
We can only confirm after a few days test. If no users complained then things should be good.
I've had bad luck delivering compressed contents in my previous lifetime using mod_gzip and apache 1.x. Probably because things are cached regardless of the user agents.
Wish me luck!
Trackback is http://myzope.kedai.com.my/blogs/kedai/26/tbping
Thanks
