DevTrain

Autor: Hannes Preishuber

HTTP Compression mit IIS 6

Seit HTTP 1.1 ist eine Möglichkeit zur kompression von HTML Daten eingebaut. HTML Daten lassen sich sehr gut komprimieren. So wird die übertragene Menge bis zu 90 % reduziert.
Der Benutzer muss gar nichts tun, wenn der Web Server die Compression (gzip/deflate) unterstützt wird sie automatisch vom Browser verwendet.

Gespeichert werden die kompriemierten Dateien in IIS Temporary Compressed Files, damit nicht jeder Request neu komprimiert werden muss.

Zur Konfiguration muss man über die MMC des IIS in den Eigenschaften der Web Sites, im Servcies Reiter die Kompression aktivieren. Dabei hat man die Option Static Files und Anwendungsdateien.

Leider bringt das im Ergebnis gar nichts. Wenn die Kompression wirkt, werden Dateien im vorher erwähnten Temporary Ordner erzeugt.

Nach langer Suche in der Konfiguration, fällt auf, das in den Webservice Extension all unbekannten ISAPI Erweiterungen verboten sind. Nun muss man Wissen, das genau diese Kompression über die ISAPI DLL mit dem Namen GZIP erledigt wird. Das ist ja einer der geänderten Sicherheitspunkte, das per default alles abgedreht ist.
Nun Abhilfe ist, ein neuen Eintrag zu erzeugen der auf die DLL zeigt und zb HTTPCompression heisst. Natürlich muss dann dies auch noch auf erlaubt/allowed gesetzt werden.

Vorsichtshalber sollte man jetzt den IIS neu starten mit IISRESET.

Damit sollte der Traffic schon ein Stück schrumpfen. Allerdings bleibt noch die Frage nach dynamischen Dateien wie ASPX. Dazu müssen wir direkt in die Datenbank des IIS gehen. Diese heisst Metabase und ist seit IIS6 ein XML File irgendwo unter \WINDOWS\system32\inetsrv.

Vorsicht bei Änderungen an der Metabase. Dies kann Ihren Webserver beeinträchtigen. Machen Sie eine Kopie der Datei Metabase.xml!

Die Metabase lässt sich mit einem Texeditor ändern. Suchen Sie nach den Einträgen IISCompressionScheme.

 <IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="0"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="FALSE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
   html
   txt"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
   dll
   exe"
 >
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="1"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="TRUE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
   html
   txt"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
   dll
   exe"
 >
</IIsCompressionScheme>


Nun tragen Sie einfach unter HcScriptFileExtensions Ihre zusätzlichen Extensions ein (zb ASPX) Als Trennzeichen wird einfach ein Blank verwendet. Sie müssen dies zweimal tun für Deflate und GZIP Kompression.

Starten Sie den IIS neu!

Nun braucht Ihr Webserver mehr Prozessorleistung zum komprimieren und viel Platz zum speichern auf der Platte. Dafür wird weniger Bandbreite benötigt.

 

 


Erfasst am: 08.12.2003 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=902
© Copyright 2003 ppedv AG - http://www.ppedv.de