Hallo zusammen,
tja, was lange waehrt wird endlich gut: es gibt ein neues mod_gzip-Release.
Kevin Kiley (der Autor) arbeitet leider an mod_gzip nicht mehr weiter, also
habe ich ein Sourceforge-Projekt eroeffnet:
http://sf.net/projects/mod-gzip
Die neue Version hat einige Bugfixes sowie ein paar neue Features implementiert.
Da ich zu Faul bin, das Changelog zu uebersetzen, hier einfach mal auf Englisch:
* mod_gzip_static_suffix suffix
This new directive defines the suffix of the static compressed files.
On most system this will be .gz, but on some systems it is for example
.z or something like that. Default is '.gz'.
Warning: You have to add an 'AddEncoding .suffix gzip' in your Apache
config! If you don't do this, Apache may send a wrong
HTTP header 'Content-Encoding'.
* mod_gzip_handle_methods GET POST
Parameters are GET or POST or a list of both values.
Default is the list of both values.
* mod_gzip_send_vary Yes/No
This will be useful for some caching http proxies like squid.
Prior to the current version of mod_gzip, they had problems
to properly handle mod_gzip output.
Example: A client that is able to handle compressed content
receives a compressed response and the proxy caches it.
The next client is not able to handle compressed content but as
the proxy was not aware of the response being a negotiation
result, it could do nothing but serve the content to this
client as well.
"Vary:" should tell the proxy what to do in those situations,
or at least warn it to not cache the content if it is not
able to understand the negotiation procedure.
The value of the 'Vary:' header will be a comma separated
list of
a) 'Accept-Encoding' and
b) each value that has been used as second operand of a
'mod_gzip_item_include reqheader' rsp.
'mod_gzip_item_exclude reqheader' directive.
This may cause a proxy to not cache the content in some
more cases than necessary, but at least make sure it
won't inadvertantly serve compressed content.
The calculation logic for 'Vary:' headers may have to be
improved in subsequent versions, as to hopefully reduce
the header names to the absolute minimum necessary.
Warning: Don't set this value to "no" unless you are perfectly
sure that all clients in your environment are able to handle
compressed content properly!
* Workfile bug fixed
In prior versions of mod_gzip there was a problem with the
workfiles. When the compressed version of a file was bigger
than the file itself, the workfile has not been deleted.
Now it will be.
* mod_gzip recognizes outdated .gz files
mod_gzip now performs another stat() call and checks whether
the static compressed version of the file is older than the
uncompressed original file itself. If so, it sends the
uncompressed content(!) and creates a
SEND_AS_IS:PRECOMPRESSED_VARIANT_OUTDATED status value.
* mod_gzip is now splitted into 3 files
Mod_gzip has been split into three files because it is easier to
maintain. And because of this splitting I added an Makefile.tmpl
(a Makefile template) for Apache build process so that you
can compile mod_gzip statically into Apache.
There is also a Makefile which uses the apxs script to generate
a shared library.
Now there are two ways to build mod_gzip: statically compiled
into Apache and a DSO-File for mod_so. If you want to
compile it statically into Apache, just copy the source
to Apache src/modules/extra directory and there into a
subdirectory named 'gzip'. You can activate it with an argument
to the configure script, e.g.
./configure --activate-module=src/modules/extra/gzip/mod_gzip.c
make
make install
This will build a new Apache with mod_gzip statically build in.
The DSO-Version is much easier to build. Just type
make APXS=/path/to/apxs
make install APXS=/path/to/apxs
The apxs script is normaly in the bin directory of Apache.
Kritik und Tester sind willkommen :)
Gruesse,
CK