Komprimierung von HTTP-Verkehr

Eine Möglichkeit besteht darin, den Datenverkehr, der von einem Webserver zum Browser gesendet wird zu komprimieren. Dazu wird in der Regel das gzip-Verfahren eingesetzt, welches im Hintergrund den gesamten Datenverkehr komprimiert. Somit können die Daten zwischen Server und Client schneller übertragen werden. Dieses Verfahren wird von den gängigsten Browsern und Servern unterstützt. Auch der IIS bietet die Möglichkeit sowohl statische als auch dynamisch erzeugte Web-Seite per gzip zu komprimieren.

Allerdings zeigt die Umsetzung dieser Technik auf Seiten des Clients (hier konkret des Internet Explorers) ein Problem auf. Gerade bei dynamischen Seiten, wie sie ja oftmals für Intranet-Inhalte typisch sind, will man oft nicht, daß die Seiten auf dem Client gecached werden, sondern die Seiten sollen bei jedem Zugriff immer wieder neu vom Server angefordert werden. Damit soll sichergestellt werden, daß die mobilen Anwender immer auf die aktuellen Daten und Informationen des Unternehmens zugreifen können. Um das Cachen von Seiten zu verhinden gibt es bestimmte “Attribute” die man einer HTML-Seite geben kann, damit sie vom Client nicht gecached wird. Leider werden diese Attribute vom Internet Explorer in zusammenhang mit gzip-komprimierten Seiten schlichtweg ignoriert. Das Ergebnis: die Seiten werden dennoch gecached.

Bei einfachen Inhalten, die sich sowieso nicht so häufig ändern stellt das noch kein Problem dar, allerdings bei Web-Anwendungen wird dies schon zu einem Problem. Hier wird oftmals immer nur eine einzige Seite, jeweils mit unterschiedlichen Parametern, aufgerufen, die dann die gesamte Darstellung und Verarbeitung übernimmt. Wird hier bei jedem Klick immer wieder die gleiche Seite angezeigt, weil der Browser die Seite, mit den nun “neuen” Parametern, nicht erneut vom Webserver anfordert sondern, wegen der permanent gleichen Adresse, die gecachte Seite anzeigt, so ist dieses Verhalten nicht akzeptabel.

Obwohl das gzip-Verfahren schon lange verwendet wird, gerade im Unix-Bereich schon seit Jahren etabliert ist, so scheitert der praktische Einsatz an den unzulänglichkeiten des Internet Explorers.

Informationen von Microsoft: Microsoft Knowledge Base Article – 321722 Content with “Content-Encoding: gzip” Is Always Cached Although You Use “Cache-Control: no-cache”

FTP per Batch

Mit Hilfe des Kommandozeilen FTP-Programms lassen sich auch ganze FTP-Sitzungen automatisieren.

Dazu muss zunächst eine FTP Steuerdatei angelegt werden, in der alle Befehle für die FTP-Sitzung aufgeführt sind.

Ein solche Steuerdatei könnte so aussehen:

 open ftp.meine-domain.org
 meinAccount
 meinPasswort
 bin
 prompt
 cd /pub/incoming
 mput *.doc
 cd /pub/
 mget *.xls
 quit

In diesem Beispiel wird eine Verbindung zum FTP-Server ftp.meine-domain.org mit dem Login meinAccount und dem Passwort meinPasswort. Anschließend wird in den Binary-Modus gewechselt und der Prompt deaktiviert, damit keine interaktiven Fragen vom FTP-Server kommen. Schließlich wird in das Verzeichnis /pub/incoming gewechselt und dort werden alle doc Dateien aus dem aktuellen lokalen Verzeichnis hochgeladen. Danach werden alle xls Dateien aus dem FTP-Verzeichnis /pub in das aktuelle Verzeichnis heruntergeladen. Nur im Zusammenhang mit mget und mput können Wildcarts bei den Dateinamen verwendet werden.

Damit das ganze beispielsweise automatisiert in einem Schedule ablaufen kann, muß diese FTP-Sitzung nun noch aus einer Batch-Datei aus aufgerufen werden:

 @echo off
 cd c:\
 ftp.exe -s:mySession.ftp > mySession.log

Mit dem Parameter -s: wird dem FTP-Programm mitgeteilt, die angegebene Sitzungsdatei zu verarbeiten. Zur besseren Kontrolle werden sämtliche Ausgaben der FTP-Sitzung in die Protokolldatei mySession.log gespeichert.

Download Beispiel: ftp_per_batch