Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

HTTP Komprimierung in IIS5

Geschrieben von: Christoph Wille
Kategorie: Optimierung

This printed page brought to you by AlphaSierraPapa

Heute beschäftigen wir uns mit einem Feature des IIS 5, das wahrscheinlich kaum jemand kennt - HTTP Komprimierung. Dabei komprimiert IIS alle ausgehenden Dateien mit dem GZIP oder Deflate Algorithmus, was speziell für Bandbreiten-beengte Server mit viel statischem Inhalt einen enormen Geschwindigkeitsgewinn bringt (eine HTML Seite kann sehr gut komprimiert werden).

Die Komprimierung an sich ist kein Microsoft-spezifisches Feature, nein, alle modernen Browser die HTTP 1.1 verstehen, können mit den Komprimierungsalgorithmen GZIP oder Deflate umgehen. Allerdings fehlte bis IIS5 das Komprimierungsfeature am Server - nun ist es in Form eines Filters permanent installiert, allerdings standardmäßig deaktiviert.

Die Komprimierung aktivieren

Wie gesagt, standardmäßig ist die Komprimierung ausgeschaltet. Da sich jetzt einige wundern werden, wo Sie denn das Feature übersehen haben, hier die Antwort - in den Standardeigenschaften des WWW Services in den Servereinstellungen. Also dort, wo man alle heiligen Zeiten einmal nachschaut.

Daher alles schön Schritt für Schritt. Server auswählen, rechte Maustaste klicken, den Eintrag Properties auswählen.

In der folgenden Dialogbox WWW Service in der Master Properties Dropdown ausgewählt lassen, und Edit klicken. Nun sind wir in den Master Eigenschaften, und die Komprimierung versteckt sich gekonnt im Service Tab:

Es gibt 2 Optionen, die für alle Sites des Servers Geltung erlangen:

Das Cacheverzeichnis für statische Dateien muß auf einer NTFS Disk liegen, die Directory Compression ausgeschaltet hat. Dieses Verzeichnis dient nur für statische Dateien, da dynamische Inhalte generell nicht gecacht werden - hier wird per Request komprimiert.

Feineinstellungen

Die Auswahl der Dateitypen, die als komprimierbar eingestuft werden, könnte man als willkürlich bezeichnen. Was zum Beispiel ist mit XML? Oder Officedokumenten? Alle diese könnten bei Komprimierung die Bandbreite deutlich entlasten, und weil sie komprimiert gecacht werden, ist die Komprimierung keine große Belastung für den Webserver.

Die Einstellungen für den Komprimierungsfilter finden sich allesamt in der Metabase des IIS. Es gibt zwar Administrationsscripts zur Manipulation von Einträgen in der Metabase, allerdings bin ich zu faul, mir schon wieder irgendwelche Kommandozeilenparameter zu merken (wer es dennoch möchte, die alternative Methode wird im referenzierten Artikel "Using HTTP Compression On Your IIS 5.0 Web Site" beschrieben).

Ich habe mich für MetaEdit entschieden, ein Tool aus dem Windows 2000 Server Resource Kit (ohne Werbung zu machen, ein vernünftiges Überleben ohne Resource Kit ist unter Windows 2000 nicht möglich). Man bekommt einen nette Baumstruktur der Metabase, und kann zum gewünschten Branch navigieren (siehe auch Screenshot):

/LM/W3Svc/Filters/Compression/GZIP/HcFileExtensions 

Ein einfacher Doppelklick, und schon kann man die Dateierweiterungen bequem editieren:

Achtung Falle: da zwei Komprimierungsalgorithmen zur Anwendung kommen, muß man den HcFileExtensions Eintrag sowohl in GZIP als auch Deflate updaten! Sonst gibt es unliebsame Überraschungen - wie zB keinerlei sichtbaren Erfolg.

Wenn man alle Änderungen durchgeführt hat, und MetaEdit wieder geschlossen hat, fehlt noch eine Kleinigkeit: man muß den IIS veranlassen, die Änderungen zu laden. Dies macht man dann mit Hilfe des IISRESET Utilities (das ist bei Windows 2000 standardmäßig dabei):

IISreset.exe /restart 

Nachtragen muß ich noch den Eintrag für Dateiendungen der dynamischen Komprimierung: HcScriptFileExtensions. Wenn man spezielle ASP Dateien komprimieren möchte, würde ich empfehlen, vorher eine neue Dateiendung auf die ASP Engine zu mappen, und dann hier einzutragen. Dadurch wird die Komprimierung nur für spezielle - nicht als ASP erkennbare - Dateien ausgeführt, und nicht für alle ASP Dateien (was performancemäßig einen Prozessor und somit den Webserver umbringen könnte).

Der Client

Um mir Anfragen der Leserschaft zu ersparen, hier die Beantwortung der Frage "Muß man am Client etwas einstellen, damit das funktioniert?". Nein. Jeder HTTP 1.1 Client beantragt automatisch Komprimierung, und nun bekommt er sie auch von Ihrem Webserver. Für den Benutzer ist alles völlig transparent.

Schlußbemerkung

Für die Komprimierung von statischen Inhalten kann ich eine eindeutige Empfehlung aussprechen - hilft's nicht, so schadet es auch nicht. Bei der Komprimierung von dynamischen Inhalten muß man sehr genau auf die Leistungsfähigkeit des Servers achten, weil man könnte unter Umständen mehr Unheil anrichten als Nutzen ziehen.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Output Caching 101
http:/www.aspheute.com/artikel/20011008.htm
Serverseitiges Caching mit XCache
http:/www.aspheute.com/artikel/20000817.htm
Trafficreduzierung mit XCompress
http:/www.aspheute.com/artikel/20020731.htm
Virtuelle Verzeichnisse umbenennen
http:/www.aspheute.com/artikel/20030911.htm
Webserver-Tuning mit XTune
http:/www.aspheute.com/artikel/20000814.htm

Links zu anderen Sites

Using HTTP Compression On Your IIS 5.0 Web Site
http://www.microsoft.com/TechNet/iis/httpcomp.asp

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.