]> granicus.if.org Git - apache/commitdiff
new directive 'compressionlevel'
authorIan Holsman <ianh@apache.org>
Wed, 5 Mar 2003 22:14:33 +0000 (22:14 +0000)
committerIan Holsman <ianh@apache.org>
Wed, 5 Mar 2003 22:14:33 +0000 (22:14 +0000)
Default compression level now changed to Zlib's default (was 'best_speed')

Obtained from: Stephen Pierzchala <stephen@pierzchala.com> Michael Schroepl <Michael.Schroepl@telekurs.de>
Reviewed by:  Ian Holsman

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@98895 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/manual/mod/mod_deflate.xml
modules/filters/mod_deflate.c

diff --git a/CHANGES b/CHANGES
index 914326968c0e17bf456cb5ff4d418da1e841f719..91d22b4831a78efc94aa95e1cfe93f2f33aa001b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,10 @@ Changes with Apache 2.1.0-dev
 
   [Remove entries to the current 2.0 section below, when backported]
 
+  *) you can now specify the compression level for mod_deflate. 
+     [Ian Holsman, Stephen Pierzchala <stephen@pierzchala.com>, 
+     Michael Schroepl <Michael.Schroepl@telekurs.de>]
+
   *) Restore the ability of htdigest.exe to create files that contain
      more than one user. PR 12910.  [AndrĂ© Malo]
 
index a522d701c671067d46ca9e8290cfcf3eb1dcf012..e462a878b1ca7f6981ead092c15da2a43fba155d 100644 (file)
@@ -272,6 +272,7 @@ client</description>
 </directivesynopsis>
 
 <directivesynopsis>
+
 <name>DeflateMemLevel</name>
 <description>How much memory should be used by zlib for compression</description>
 <syntax>DeflateMemLevel <var>value</var></syntax>
@@ -286,5 +287,23 @@ client</description>
 </usage>
 </directivesynopsis>
 
+<directivesynopsis>
+<name>CompressionLevel</name>
+<description>How much compression do we apply to the output</description>
+<syntax>CompressionLevel<var>value</var></syntax>
+<default>Zlib's default</default>
+<contextlist><context>server config</context><context>virtual host</context>
+</contextlist>
+
+<usage>
+    <p>The <directive>CompressionLevel</directive> directive specifies
+        what level of compression should be used, the higher the value, 
+        the better the compression, but the more CPU time is required to
+        achieve this.</p>
+    <p>The value must between 1 (less compression) and 9 (more compression).</p>
+</usage>
+</directivesynopsis>
+
+
 </modulesynopsis>
 
index 404fe410154c122c0358290709de9968e30efb91..c14b10fff87fe849c3fefb999c6b29501b15f6ff 100644 (file)
@@ -128,6 +128,7 @@ typedef struct deflate_filter_config_t
 {
     int windowSize;
     int memlevel;
+    int compressionlevel;
     apr_size_t bufferSize;
     char *note_ratio_name;
     char *note_input_name;
@@ -135,6 +136,7 @@ typedef struct deflate_filter_config_t
 } deflate_filter_config;
 
 /* windowsize is negative to suppress Zlib header */
+#define DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION
 #define DEFAULT_WINDOWSIZE -15
 #define DEFAULT_MEMLEVEL 9
 #define DEFAULT_BUFFERSIZE 8096
@@ -167,6 +169,7 @@ static void *create_deflate_server_config(apr_pool_t *p, server_rec *s)
     c->memlevel   = DEFAULT_MEMLEVEL;
     c->windowSize = DEFAULT_WINDOWSIZE;
     c->bufferSize = DEFAULT_BUFFERSIZE;
+    c->compressionlevel = DEFAULT_COMPRESSION;
 
     return c;
 }
@@ -245,6 +248,23 @@ static const char *deflate_set_memlevel(cmd_parms *cmd, void *dummy,
     return NULL;
 }
 
+static const char *deflate_set_compressionlevel(cmd_parms *cmd, void *dummy,
+                                        const char *arg)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+    int i;
+
+    i = atoi(arg);
+
+    if (i < 1 || i > 9)
+        return "Compression Level must be between 1 and 9";
+
+    c->compressionlevel = i;
+
+    return NULL;
+}
+
 /* magic header */
 static char deflate_magic[2] = { '\037', '\213' };
 
@@ -354,7 +374,7 @@ static apr_status_t deflate_out_filter(ap_filter_t *f,
         ctx->bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
         ctx->buffer = apr_palloc(r->pool, c->bufferSize);
 
-        zRC = deflateInit2(&ctx->stream, Z_BEST_SPEED, Z_DEFLATED,
+        zRC = deflateInit2(&ctx->stream, c->compressionlevel, Z_DEFLATED,
                            c->windowSize, c->memlevel,
                            Z_DEFAULT_STRATEGY);
 
@@ -822,6 +842,8 @@ static const command_rec deflate_filter_cmds[] = {
                   "Set the Deflate Buffer Size"),
     AP_INIT_TAKE1("DeflateMemLevel", deflate_set_memlevel, NULL, RSRC_CONF,
                   "Set the Deflate Memory Level (1-9)"),
+    AP_INIT_TAKE1("CompressionLevel", deflate_set_compressionlevel, NULL, RSRC_CONF,
+                  "Set the Deflate Compression Level (1-9)"),
     {NULL}
 };