"Fossies" - the Fresh Open Source Software Archive

Member "mod_gzip-1.3.26.1a/docs/manual/deutsch/enhancements.htm" (30 Sep 2002, 9719 Bytes) of package /linux/www/apache_httpd_modules/old/mod_gzip-1.3.26.1a.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) HTML source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.


    1 <?xml version="1.0" encoding="iso-8859-1" ?>
    2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    3 <html xmlns="http://www.w3.org/1999/xhtml">
    4 
    5 <head>
    6  <title>M&ouml;gliche Erweiterungen in k&uuml;nftigen Versionen von mod_gzip</title>
    7  <meta name="author"      content="Michael Schr&ouml;pl" />
    8  <meta name="description" content="Eine Aufz&auml;hlung (hoffentlich) sinnvoller und wahrscheinlich leicht realisierbarer Funktions-Erweiterungen f&uuml;r k&uuml;nftige mod_gzip-Versionen" />
    9  <meta name="keywords"    content="Apache, HTTP, Kodierung, gzip, Komprimierung" />
   10  <style type="text/css">
   11 body{font-family:sans-serif;margin:0px 30px 0px 30px;}
   12 h1{font-size:22px;margin-top:20px;}
   13 h2{font-size:18px;margin-top:14px;}
   14 small{font-size:80%;}
   15 td{vertical-align:top;}
   16 tt{font-weight:bold;}
   17 code,tt{font-family:"Courier New",monospace;}
   18 h1,h2{margin-bottom:1px;}
   19 p,td{margin-top:3px;margin-bottom:3px;}
   20 p,ul,ol,li{font-size:17px;line-height:22px;}
   21 ul,ol,li{margin-top:0px;margin-bottom:0px;}
   22 img{border-width:0;}
   23 
   24 #nav{position:absolute;top:30px;left:0px;font-size:14px;width:170px;font-weight:bold;margin:2px 2px 2px 30px;}
   25 #nav[id]{position:fixed;}
   26 #nav img{margin:5px;}
   27 #nav p, #nav a:hover, #nav a{display:block;padding:3px;margin:2px;width:150px;font-size:15px;line-height:18px;}
   28 #content{position:absolute;left:220px;right:30px;}
   29 #mail{text-align:right;}
   30 #icon{width:190px;float:left;}
   31 #mail,#icon{margin-top:30px;}
   32 
   33 @media screen {
   34 body{color:#000;background-color:#f8ebd9;}
   35 h1{color:#666;}
   36 h2{color:#840;}
   37 code{color:#333;}
   38 em{color:#900;}
   39 tt{color:#909;}
   40 h1,h2,code,em,tt{background-color:inherit;}
   41 .new13192a{color:#inherit;background-color:#ffd;}
   42 .new13261a{color:#inherit;background-color:#eff;}
   43 .bugfix{color:#fff;background-color:#f00;font-weight:bold;padding:0px 4px;}
   44 #nav a{color:#530;background-color:transparent;}
   45 #nav a{text-decoration:none;}
   46 #nav p, #nav a:hover{color:#000;background-color:#fff;}
   47 #nav p {border:1px #660 solid;}
   48 #nav a {border:1px #666 dotted;}
   49 }
   50 
   51 @media print {
   52 #icon,#nav{display:none;}
   53 #content{position:absolute;left:0px;right:0px;}
   54 }
   55  </style>
   56 </head>
   57 
   58 <body>
   59 
   60 <div id="nav">
   61 
   62 <img src="mod_gzip_logo.gif" height="47" width="102" alt="mod_gzip-Logo" />
   63 
   64 
   65 <a title="mod_gzip - was ist das &uuml;berhaupt?" href="index.htm">mod_gzip</a>
   66 
   67 
   68 
   69 <a title="Komprimierung von HTTP-Inhalten durch Content-Encoding" href="encoding.htm">Content-Encoding</a>
   70 
   71 
   72 
   73 <a title="Welche Browser k&ouml;nnen mit 'Content-Encoding: gzip' umgehen?" href="browser.htm">Browser</a>
   74 
   75 
   76 
   77 <a title="Wie gehen Firewall mit 'Content-Encoding: gzip' um?" href="firewalls.htm">Firewalls</a>
   78 
   79 
   80 
   81 <a title="Eine Beispiel-Konfiguration f&uuml;r mod_gzip" href="config.htm">Konfiguration</a>
   82 
   83 
   84 
   85 <a title="Beschreibung s&auml;mtlicher mod_gzip-Status-Codes" href="status.htm">Status-Codes</a>
   86 
   87 
   88 
   89 <p>Erweiterungen</p>
   90 
   91 
   92 
   93 <a title="Zwischenspeicherung mod_gzip-komprimierter Daten durch Proxy-Server" href="cache.htm">Caching</a>
   94 
   95 
   96 
   97 <a title="Versions-Historie und &Auml;nderungsprotokoll von mod_gzip" href="versions.htm">Versionen</a>
   98 
   99 
  100 
  101 <a title="Andere Quellen zu mod_gzip" href="links.htm">Links</a>
  102 
  103 
  104 </div>
  105 
  106 <div id="content">
  107 
  108 <h1>M&ouml;gliche Erweiterungen in k&uuml;nftigen Versionen von <tt>mod_gzip</tt></h1>
  109 
  110 <p>Dieses Dokument beschreibt einige m&ouml;gliche Funktionserweiterungen, die sich hoffentlich mit wenig Aufwand in die derzeit aktuelle Version 1.3.26.1a von <tt>mod_gzip</tt> einbauen lassen sollten und die Verwendung dieses Moduls verbessern w&uuml;rden.</p>
  111 
  112 <h2><a id="rule_logging"></a>Protokollierung von Klasse und Wert der entscheidenden Filter-Regel</h2>
  113 <p>Die Entscheidung dar&uuml;ber, ob sich ein Dokument-Inhalt f&uuml;r eine Komprimierung durch <tt>mod_gzip</tt> qualifiziert, f&auml;llt letzten Endes bei der Auswertung der entsprechenden Filterregeln, welche mit Hilfe der Direktiven <code>mod_gzip_item_include</code> bzw. <code>mod_gzip_item_exclude</code> definiert und durch die Funktion <code>mod_gzip_validate1</code> gepr&uuml;ft wird.</p>
  114 <p>Diese Funktion wird allerdings an nicht weniger als f&uuml;nf Stellen im Programmquelltext aufgerufen, jeweils mit unterschiedlichen Parameter-Belegungen f&uuml;r bestimmte Teilmengen der zu diesem Zeitpunkt jeweils zu pr&uuml;fenden Regel-Klassen. In einigen dieser F&auml;lle ist aufgrund der eingeschr&auml;nkten Parameterbelegung klar, welche Klasse von Regel zu einem bestimmten Ergebnis gef&uuml;hrt haben mu&szlig; <small>(nicht jedoch, welche Regel!)</small>, in anderen F&auml;llen <small>(etwa bei der gleichzeitigen Pr&uuml;fung aller Regeln der Klassen <code>file</code>, <code>uri</code>, <code>mime</code> und <code>handler</code>)</small> ist nicht einmal die Klasse der entscheidenden Regel klar <small>(denn <code>mod_gzip_validate1</code> liefert einen so unspezifischen Ergebniswert an den Aufrufer zur&uuml;ck, da&szlig; dieser nicht verstehen kann, was genau passiert ist - in einigen F&auml;llen werden sogar interne Verarbeitungsfehler genauso dargestellt wie eine Ablehnung aufgrund einer Regel)</small>. In solchen F&auml;llen Daher ist nicht einmal eine vern&uuml;nftige Auswertung des <tt>mod_gzip</tt>-Statuscodes m&ouml;glich.</p>
  115 <p>Das Definieren eines sinnvollen Regelsatzes ist jedoch der wichtigste Schritt bei der gesamten <small>(und momentan noch ziemlich komplizierten)</small> <tt>mod_gzip</tt>-Konfiguration. Jede Information dar&uuml;ber, welche der definierten Regeln in welchen F&auml;llen &uuml;ber die Komprimierung eines Dokument-Inhalts den Ausschlag gegeben hat, w&auml;re f&uuml;r den Anwender in vielen F&auml;llen hilfreich.</p>
  116 <p>Andererseits unterst&uuml;tzt <tt>mod_gzip</tt> <em>nach</em> erfolgreicher Verarbeitung eines Dokuments bereits die Transparenz der Verarbeitung durch das Setzen einiger Variablen, welche innerhalb von Apache-Log-Formaten verwendet werden k&ouml;nnen <small>(den Verarbeitungs-Status, die Dokumentgr&ouml;&szlig;e vor bzw. nach der Komprimierung sowie die Volumen-Einsparung in Prozent - letztere leider f&auml;lschlicherweise <em>immer</em> aufgerundet)</small>. Analog k&ouml;nnte <tt>mod_gzip</tt> <small>(in dem Moment, in welchem es die Entscheidung &uuml;ber die Komprimierung des Dokument-Inhalts getroffen hat)</small> Klasse und Inhalt der entscheidenden Regel in zwei weiteren Protokoll-Variablen ablegen, welche innerhalb eines Log-Formats &uuml;ber die Namen <code>mod_gzip_rule_class</code> und <code>mod_gzip_rule_content</code> angesprochen w&uuml;rden.</p>
  117 
  118 <h2><a id="gzip_level"></a>Konfigurierbare gzip-Komprimierungsstufe</h2>
  119 <p>Aktuell verarbeitet <tt>mod_gzip</tt> die <code>gzip</code>-Komprimierungsstufe 6. dies ist fest eincodiert durch die Zuweisung <code>gz1-&gt;level = 6</code> in der Funktion <code>gz1_init</code>.</p>
  120 <p>Je h&ouml;her die Komprimierungsstufe <small>(<code>gzip</code> erlaubt normalerweise Werte zwischen 0 und 9)</small>, desto besser die Komprimierungswirkung, desto h&ouml;her aber auch der Verbrauch an CPU-Zeit. Durch eine Anpassung dieser Komprimierungsstufe k&ouml;nnte ein Betreiber also den <i>trade-off</i> zwischen CPU-Last und Bandbreiteneinsparung nach seinen eigenen Vorstellungen aufl&ouml;sen. Eigene Experimente haben ergeben, da&szlig; auch Stufe 3 bereits sehr nahe an die Komprimierungswirkung von Stufe 6 heran kommt - zumindest die Wahl zwischen diesen beiden Werten sollte dem Anwender &uuml;berlassen werden.</p>
  121 <p>Insofern w&auml;re es sinnvoll, diese Komprimierungsstufe durch die Einf&uuml;hrung einer zus&auml;tzlichen Direktive <code>mod_gzip_compression_level</code> konfigurierbar zu gestalten.</p>
  122 
  123 <h2><a id="boolean_rules"></a>Verkn&uuml;pfung der <code>include</code>/<code>exclude</code>-Direktiven um Boole'sche Ausdr&uuml;cke</h2>
  124 <p><tt>mod_gzip</tt> 1.3.19.1a verwendet - aufgrund der Art seiner Einbettung in die Request-Verarbeitung des Apache-Servers - ein komplexes, zweistufiges Filterverfahren f&uuml;r die Entscheidung, ob das Ergebnis eines Requests komprimiert werden soll. <small>(In einer ge&auml;nderten Architektur von Apache 2.0 k&ouml;nnte diese Einbettung in einfacherer Form m&ouml;glich sein.)</small></p>
  125 <p>Ein Request wird derzeit genau dann von <tt>mod_gzip</tt> akzeptiert, wenn in jeder der beiden Entscheidungsphasen mindestens eine <code>include</code>-Regel, aber keine <code>exclude</code>-Regel feuert. Da solche Regeln regul&auml;re Ausdr&uuml;cke als Parameterwerte erlauben, sind damit m&auml;chtige Bedingungen m&ouml;glich.</p>
  126 <p>Allerdings sind alle Regeln voneinander unabh&auml;ngig. Die derzeit verf&uuml;gbaren Direktiven erlauben es dem Anwender beispielsweise nicht, auszudr&uuml;cken, da&szlig; bestimmte MIME-Typen nur an bestimmte Browser in komprimierter Form ausgeliefert werden sollen - es fehlt eine <code>AND</code> Verkn&uuml;pfung zwischen mehreren Regeln.</p>
  127 <p>Es scheint nur wenige Einsatzf&auml;lle f&uuml;r dieses Feature zu geben - derzeit w&auml;re es vor allem notwendig, um Filterregeln zur Umgebung der diversen bugs in Netscape 4 zu formulieren, ohne diesen Browser komplett von der Komprimierung ausschlie&szlig;en. Mit der Zeit <small>(und besserer Standard-Kompatibilit&auml;t der Browser)</small> k&ouml;nnte dieses Feature entbehrlich werden.</p>
  128 
  129 <div id="icon">
  130  <a href="http://validator.w3.org/check/referer"><img alt="" title="valid XHTML 1.1" height="31" width="88" src="valid-xhtml11.png" /></a><a href="http://jigsaw.w3.org/css-validator/check/referer"><img alt="" title="valid CSS" height="31" width="88" src="valid-css.png" /></a>
  131 </div>
  132 
  133 
  134 <p id="mail">(<a href="mailto:michael.schroepl&#x40;gmx.de?subject=mod_gzip">Michael Schr&ouml;pl</a>, 2002-09-28)</p>
  135 
  136 </div>
  137 
  138 </body>
  139 </html>