You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ia...@apache.org on 2003/03/05 23:14:33 UTC

cvs commit: httpd-2.0/modules/filters mod_deflate.c

ianh        2003/03/05 14:14:33

  Modified:    .        CHANGES
               docs/manual/mod mod_deflate.xml
               modules/filters mod_deflate.c
  Log:
  new directive 'compressionlevel'
  Default compression level now changed to Zlib's default (was 'best_speed')
  
  Obtained from: Stephen Pierzchala <st...@pierzchala.com> Michael Schroepl <Mi...@telekurs.de>
  Reviewed by:  Ian Holsman
  
  Revision  Changes    Path
  1.1105    +4 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1104
  retrieving revision 1.1105
  diff -u -r1.1104 -r1.1105
  --- CHANGES	5 Mar 2003 16:36:59 -0000	1.1104
  +++ CHANGES	5 Mar 2003 22:14:32 -0000	1.1105
  @@ -2,6 +2,10 @@
   
     [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 <st...@pierzchala.com>, 
  +     Michael Schroepl <Mi...@telekurs.de>]
  +
     *) Restore the ability of htdigest.exe to create files that contain
        more than one user. PR 12910.  [Andr� Malo]
   
  
  
  
  1.15      +19 -0     httpd-2.0/docs/manual/mod/mod_deflate.xml
  
  Index: mod_deflate.xml
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/docs/manual/mod/mod_deflate.xml,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- mod_deflate.xml	1 Jan 2003 21:13:42 -0000	1.14
  +++ mod_deflate.xml	5 Mar 2003 22:14:33 -0000	1.15
  @@ -272,6 +272,7 @@
   </directivesynopsis>
   
   <directivesynopsis>
  +
   <name>DeflateMemLevel</name>
   <description>How much memory should be used by zlib for compression</description>
   <syntax>DeflateMemLevel <var>value</var></syntax>
  @@ -285,6 +286,24 @@
       (a value between 1 and 9).</p>
   </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>
   
  
  
  
  1.31      +23 -1     httpd-2.0/modules/filters/mod_deflate.c
  
  Index: mod_deflate.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/filters/mod_deflate.c,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- mod_deflate.c	17 Feb 2003 04:46:00 -0000	1.30
  +++ mod_deflate.c	5 Mar 2003 22:14:33 -0000	1.31
  @@ -128,6 +128,7 @@
   {
       int windowSize;
       int memlevel;
  +    int compressionlevel;
       apr_size_t bufferSize;
       char *note_ratio_name;
       char *note_input_name;
  @@ -135,6 +136,7 @@
   } 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 @@
       c->memlevel   = DEFAULT_MEMLEVEL;
       c->windowSize = DEFAULT_WINDOWSIZE;
       c->bufferSize = DEFAULT_BUFFERSIZE;
  +    c->compressionlevel = DEFAULT_COMPRESSION;
   
       return c;
   }
  @@ -245,6 +248,23 @@
       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 @@
           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 @@
                     "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}
   };