We are using Apache Mod_deflate to dynamically compress output to clients that can handle it. It works great, however most of our large archives are plain text files and we are running out of space.
While keeping the same file names and endings (i.e .html), we would like to serve both pre-compressed and not-compressed html pages (different pages, NOT the same page twice) at the same time, with the web serve able to a) distinguish if the file is compressed or not and b) if the client can accept compressed files or not. And then make adjustments as necessary (uncompressing for clients who can't accept compressed files, or compressing files that clients can, etc.)
Ideally, for apache to serve:
/index.html -> not compressed. Mod_deflate to compress for clients that can accept it or send plain for clients who can't accept compress files
and also serve
/archiveda.html -> compressed. Mod_deflate bypassing compressing and serves the pre-compressed version to clients that can handle it OR uncompresses for clients that can not.
The pre-compressed files can be intermixed with no compressed files, so no solutions based on directories. Also, we cannot change the names of any files.
Ideally, the older mod_gunzip would seem like the solution, but is only for Apache 1.1. In the mod_deflate docs, it is suppose to bypass compressing already compressed files. We tried pre-compressing using gzip,compress and pack to no luck - the client gets giberish ascii text. I am also not sure that even if we get it to bypass compressing pre-compressed files, that it would automatically decompress those files for clients who can't accept compressed docs.
Below is our current mod_deflate configuration in httpd.conf.
# Insert filter
# 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 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