Michael Schröpl: htaccess und htpasswd - jetzt kommt keiner auf die Seiten

Beitrag lesen

Hi Patrick,

Hmmh... da muß ich mal nachhaken... heißt es dann, ich könnte auch
mod_gzip einsetzen?

<standardfrage>Was willst Du denn erreichen?</standardfrage>

mod_gzip ist ein 3rd-Party-Apache-Modul, welches die Inhalte ausgelieferter Seiten komprimieren kann - insbesondere dynamisch generierte Seiten. Denn bei statischen Seiten gäbe es auch schon Lösungen mit 'Bordmitteln' (statisch komprimieren und Content Negotiation - das kann mod_gzip so nebenbei auch, und ohne dafür den ganzen MultiViews-Voodoo veranstalten zu müssen, siehe entsprechender Feature-Artikel).
Das spart zweifellos Bandbreite bei der Seitenauslieferung; je nach Meßverfahren (ich zähle die HTTP-Header etc. mit) ist eine Halbierung bis Drittelung des Traffic durchaus machbar. (Je mehr "Luft" bisher ausgeliefert wurde, desto mehr kannst Du gewinnen; generierte HTML-Seiten eines Forums sind toll komprimierbar, GIFs gar nicht, miniwinzigkleine CSS- und JavaScript-Dateien auch kaum.)
Die on-the-fly-Komprimierung belastet den Server natürlich ein wenig zusätzlich, aber bei der Konfiguration kann man an vielen Schrauben drehen, um dies entsprechend feinzutunen.
Es gibt zahlreiche Antworten, die Du _nicht_ komprimiert ausliefern wollen wirst - sei es, daß es nicht viel bringt, sei es, daß der Browser Dich belogen hat und besser doch keine komprimierten Seiten bekommen sollte. (Meine Produktionsmaschine komprimiert 39% aller Requests, reduziert damit aber das Volumen des ausgelieferten Content um 67% und den Gesamt-Traffic um 57%, Zahlen von heute.) Auch das ist eine Frage der Konfiguration - im Wesentlichen baust Du dabei einen Regelsatz auf, welcher auf Eigenschaften des Request beruht. (URL, Dateiname, MIME-Typ, ein- und ausgehende HTTP-Header-Felder, Apache-Handler - Gestaltungsfreiheit ist reichlich vorhanden - man braucht aber auch fast alles, wenn man weiß, was man will.)

Wenn ja, wie?

"Einsetzen" bedeutet:

1. Einbauen in den Apache-Server, den Du _betreibst_. Du mußt selbst Apache-Administrator Deiner Maschine sein, weil Du ja nicht nur das Verhalten (die Konfiguration), sondern den Binärcode des Apache selbst um ein 'Fremdprodukt' erweiterst - normales Webhosting reicht _nicht_. (Server-Hosting schon ...) Mag sein, daß so etwas irgendwann mal den Unterschied zwischen einem normalen und einem 'guten' Provider ausmachen wird.
Je nachdem, was Du da selbst darfst bzw. kannst, hast Du die Wahl zwischen "Apache plus mod_gzip-Quelltext neu übersetzen" (so mache ich es unter UNIX) oder "ein Deiner Plattform entsprechendes übersetztes Modul downloaden" (für Windows und Linux gibt es in diesem Format schon etwas - da ich keinen Windows-C-Compiler habe, muß ich auf dieser Plattform diesen Weg gehen) "und via httpd.conf dazu laden" - wofür Dein Apache bereits den Shared-Object-Loader mod_so beinhalten muß (das tun aber viele vorgefertigten Apaches schon, insbesondere die Windows-Binaries, aber auch die typischen Linux-Apaches - grusel).

2. Konfigurieren. Dabei legst Du ein paar Betriebsparameter fest; vor allem aber beschreibst Du, Ergebnisse welcher Anforderungen vor der Auslieferung von mod_gzip komprimiert werden sollen und welche nicht. Das ist ein durchaus nichttrivialer Teil der Arbeit, weil erstens die momentan verfügbare Dokumentation eher spärlich bemessen ist ("wir arbeiten daran" ...) und zweitens für ein wirkliches Verständnis dessen, was man alles tun muß, um mit wirklich exotischen Sonderfällen klar zu kommen, ein detailliertes Wissen über interne Apache-Abläufe erforderlich ist, welches ich auch nach einem halben Jahr Beschäftigung mit mod_gzip noch nicht bis ins Detail erworben habe ... nein, nicht weinen - es ging wirklich nur um die _exotischen_ Sonderfälle, also diejenigen anderen Apache-Fremdmodule, welche sich an bestimmte interne Apache-Spielregeln nicht halten, eigenmächtig Requests intern umschreiben usw.
Eine mod_gzip-Konfiguration für den "Normalbetrieb" kriegst Du genauso hin wie jede andere Apache-Konfiguration: Überlegen, was Du willst, und die entsprechenden Direktiven verwenden. Mit
   http://www.schroepl.net/projekte/mod_gzip/config.shtml
kommst Du schon mal ziemlich weit - wenn Du dann anfangen willst, auch noch die dynamischen Ausgaben von Java-Servlet-Engines oder SSL-Virtual Hosts zu komprimieren, oder Deinen Apache als 'compressing proxy' vor eine Menge anderer (fremder! Es ist sogar ein M$-IIS dabei) Webserver zu stellen, dann treffen wir uns auf der mod_gzip-Mailingliste wieder ...

Viele Grüße
      Michael

P.S.: In der iX 3/2002 ist ein schöner Artikel über mod_gzip.