HTTP Komprimierung in IIS5
Geschrieben von: Christoph Wille 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 aktivierenWie 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. FeineinstellungenDie 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 ClientUm 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ßbemerkungFü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. Verwandte Artikel
Output Caching 101 Links zu anderen Sites
Using HTTP Compression On Your IIS 5.0 Web Site Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |