HomeKontaktImpressum
Sie sind hier: Home

HTTP-Pipelining mit Firefox

Seit Version 1.1 des HTTP-Protokolls ist es erlaubt mehrere Serveranfragen in einem einzigen HTTP-Request zu stellen. Hierdurch lassen sich die an den Webserver zu stellenden Anfragen deutlich verringern, so dass der Aufwand zum Abruf einzelner Dateien erheblich vereinfacht wird. Je zahlreicher die externen Elemente auf einer Website sind, desto deutlicher kann sich die Verringerung der Serveranfragen auf die Website-Performance auswirken.

Ursprünglich wurden HTTP-Anfragen an die zur Darstellung einer Internetseite benötigten Dateien grundsätzlich sequenziell abgesetzt. Bevor eine Internetseite durch den Browser gerendert werden kann, muss – sowohl mit als auch ohne HTTP-Pipelining – das eigentliche HTML-Dokument, welches unter einer bestimmten URL abrufbar ist, vom Webserver angefordert werden. In diesem Fall wird natürlich mit dem ersten Request nur eine einzige Datei abgerufen, da in der HTML-Datei ja erst die enthaltenen externen Seitenelemente angegeben sind. Soweit gibt es keinen Unterschied zwischen den beiden Verfahren.

Nachdem das HTML-Dokument beim Browser angekommen ist, ergibt sich für diesen eine Liste mit – beispielsweise per Link- oder IMG-Tag angegebenen – externen Seitenelementen, die zur vollständigen Seitendarstellung nachgeladen werden müssen. Ohne Pipelining werden die Dateien nacheinander vom Webserver angefordert und auch getrennt voneinander empfangen. Für jede einzelne Datei wird also ein HTTP-Request an den Webserver gestellt, der diesen beantwortet und die benötigten Daten an den Browser schickt. Dabei entsteht jedesmal ein Overhead, der sich auf die Geschwindigkeit der Internetseite auswirkt. Erst wenn die Dateiliste vollständig abgearbeitet ist, ist der Ladevorgang abgeschlossen und die Internetseite kann durch die Browseranwendung vollständig gerendert werden. Wie schnell diese Liste abgearbeitet werden kann hängt nicht zuletzt von der Anzahl der durch den Browser gleichzeitig nutzbaren Connections ab.

Bei aktiviertem HTTP-Pipelining fordern Firefox & Co. nicht mehr nur eine einzelne Datei je möglicher Connection an. Vielmehr werden mehrere Anfragen zu einem einzelen Request zusammen gefasst. Werden etwa bei aktiviertem Pipelining vier Dateien mit einem einzigen Request-Header angefordert, so entfallen drei getrennte Serveranfragen und der hierbei benötigte Overhead. Je höher die Latenzzeit bei Anfragen an den Server ist, desto größer ist letztlich die Zeitersparnis gegenüber Einzelrequests. Die auf diese Weise angeforderten Dateien werden dann in der Reihenfolge, in der sie im Header angefordert wurden über die geöffnete Connection – und innerhalb eines einzigen HTTP-Response – an den Browser verschickt. Es werden also vier Aufträge zusammengefasst durch den Webserver bearbeitet und die Dateien können in einem Rutsch versendet werden, was gerade bei kleinen Einzeldateien erheblich schneller geht und die Ladezeit der Internetseite verringert.

HTTP-Pipelining ist bei Mozilla-basierten Browsern – etwa Firefox oder Seamonkey – standardmäßig deaktiviert, so dass diese Möglichkeit der Verringerung der benötigten Requests nicht genutzt wird. Die Aktivierung kann mit dem Mozilla-eigenen Konfigurations-Frontend erfolgen. Nach Eingabe von about:config (gefolgt von der Eingabetaste) in der Adresszeile der Mozilla-Browser – Firefox, Seamonkey... – erscheinen die Konfigurationsmöglichkeiten in Form einer Liste, die alle möglichen Einstellungen beinhaltet. Damit nur die für die Aktivierung interessanten Einstellungen aufgelistet werden, kann unter Filter die Zeichenkette „network.http.p” angegeben werden. Nach der Eingabe verschwinden alle Optionen, die nichts mit dem angegebenen Schlüsselpfad zu tun haben und die Sache wird um einiges übersichtlicher. Folgende Abbildung zeigt den Inhalt des Browserfensters nach der Filterung, wobei hier die Standartwerte für das Pipelining gelistet werden.

HTTP Pipelining aktivieren
Abb. 1: Konfiguration von Pipelining mit Firefox

Zur Aktivierung des Pipelining genügt ein Doppelklick auf den Schlüssel network.http.pipelining. Normalerweise wird dieser Wert – es gibt hier nur die Eingabemöglichkeiten true und false – automatisch auf „true” gesetzt. Die Zeile wird nun „fett” dargestellt, was den Benutzer nur darauf hinweisen soll, dass der hier gespeicherte Wert nicht dem Standardwert entspricht. Wenn auch Proxy-Server derart angesprochen werden sollen, so macht man das gleiche mit dem Wert des Schlüssels von network.http.proxy.pipelining. Damit nutzt der Browser künftig HTTP-Pipelining und weitere Einstellungen sind eigentlich nicht nötig.

Zusätzlich kann man noch die in der Einstellung network.http.pipelining.maxrequests angegebene maximale Anzahl der in eine Anfrage verpackten Requests erhöhen. Auch dies erfolgt nach einem Doppelklick auf den Einstellungsnamen. Im daraufhin geöffneten Eingabedialog gibt man nun einfach den neuen Wert (hier dürfen nur ganzzahlige Werte angegeben werden) ein und bestätigt seine Eingabe. Normalerweise ist hier aber keine Änderung nötig und wenn eine Website Cookies nutzt, dann kann der Request-Header eventuell schnell wachsen – der Maximalwert für diese Option liegt bei acht. Pipelining bei SSL-Connections sollte man sich sparen, da normalerweise nicht mehrere externe Elemente einer Internetseite verschlüsselt verschickt werden. Davon abgesehen kann es bei SSL-Requests schnell zu Problemen führen.

  
© 2009-2017 Möglichkeiten zur Steigerung von Geschwindigkeit und Usability Ihrer eigenen Website