Optimierung von Latenzen im mobilen Netz

27. Januar 2017

Veröffentlicht in:

Webentwicklung

Bessere mobile Performance für Web-Applikationen

Nach über 25 Jahren ist das Internet zu einem heiß umkämpften Markt geworden. Aus seinen universitären Anfängen, über eine Spielwiese für Nerds hat sich das Netz zu einem unverzichtbaren Bestandteil unseres Lebens und unserer Wirtschaft entwickelt. Und da zählt vor allem eins: Geschwindigkeit.

Vorbei sind die Zeiten spartanischer Textseiten mit einigen wenigen . Längst sind responsive Seiten mit optisch ansprechenden Multimediainhalten und Möglichkeiten zur Interaktion zum Standard geworden. Wurden noch zu Beginn des Jahrtausends vergleichsweise geringe Datenmengen auf die Bildschirme von Desktoprechnern transportiert, schwirren heute riesige Datenströme zwischen Tablet, Handys, Laptops und Servern hin und her. Und niemand möchte mehr lange auf die Einwahl ins Netz und den Aufbau einer Internetseite warten. Man geht nicht mehr online, man ist online. Dauerhaft.

Gerade in Boomzeiten mobiler Webanwendungen wollen wir diesmal einen Blick zurück werfen, denn mit einem sich drastisch verändernden Internet, müssen auch Übertragungsprotokolle sinnvoll und stabil weiterentwickelt werden. Denn oftmals hilft ein Blick in die Vergangenheit dabei, aktuelle Entwicklungen und Probleme besser einzuordnen. Denn nur, wer die Geschichte des versteht, kann die Entwicklung dazu nutzen, noch bessere mobile Web-Applikation mit noch höherer Performance zu entwickeln. Also lehnen Sie sich zurück und begleiten Sie uns ins letzte Jahrtausend – zu den Anfängen des Internets.

HTTP 1.0 – Aller Anfang ist langsam

Mit der Etablierung eines weltweiten Computernetzwerkes, mussten Roy Fielding, Tim Berners-Lee und ihre Mitstreiter am Genfer CERN auch ein Kommunikationsprotokoll entwickeln, das den Austausch von Daten zwischen Computern überhaupt erst ermöglichte. Im Mai 1996 wurde schließlich das Protokoll vorgestellt, das wir heute als HTTP 1.0 kennen. In diesem Protokoll wird für jede Anfrage an einen Server standardmäßig eine HTTP-Verbindung geöffnet und nach Abarbeitung der anfrage automatisch vom Server wieder geschlossen. Dabei wird jeder anfrage genau eine Verbindung zugeordnet, die auch nicht mehrfach benutzt werden kann. Um die Ladezeiten für Internetseiten zu minimieren, wird bei HTTP 1.0 für jede Resource eine eigene Verbindung geöffnet, die Seite also teilweise übertragen. Enthält eine Html-Dokument beispielsweise fünf Bilder, so sind sechs einzelne Verbindungen notwendig, um eine Seite vollständig zu übertragen. Es liegt auf der Hand, dass der notwendige Drei-Wege-Handschlag jeder Einzelverbindung, die Ladezeiten mitunter extrem verlängerte. Dieses Problem führte schließlich zur Entwicklung der Folgeversion HTTP 1.1.

HTTP 1.1 – Die Sache nimmt Fahrt auf

Mit der Einführung von und Cascading Style Sheets begann sich HTTP 1.0 als zunehmend ungeeignet herauszustellen. Zu hoch wurden die Zeiten für einen Seitenaufbau, wenn für jedes Element einer Seite eine separate Verbindung aufgebaut, bestätigt und wieder geschlossen werden muss. Deshalb erhalten Websites mit HTTP 1.1 seit dem Jahr 1999 über das sogenannten Keep-Alive, einen Headereintrag, dem Server zu signalisieren, dass die Verbindung aufrechterhalten bleiben soll. Durch die nun mögliche Mehrfachnutzung einer Verbindung wird der Verbindungsaufwand drastisch gesenkt (auch weil nur noch ein einziger Drei-Wege-Handschlag notwendig ist) und damit die Performance von Webseiten massiv gesteigert. Außerdem lässt HTTP 1.1 zu, abgebrochene Übertragungen fortzusetzen. Selbstverständlich ist es auch in HTTP 1.1 möglich, dass eine Seite parallele Verbindungen aufbaut, um die Ladezeiten zu verkürzen. HTTP 1.1 brachte eine ganze Reihe von Verbesserungen mit, die helfen, die Performance einer Seite zu steigern:

Domain sharding – Hierbei wird eine Domain in mehrere Subdomains zerlegt, die über parallele Verbindungen übertragen werden. Pro Host können das sechs bis acht parallele Übertragungen sein.

Images Sprites – Bilddateien werden in einer großen Datei kombiniert, was einen effizienteren Download ermöglicht.

Verknüpfung von Code Files – In einem ähnlichen Verfahren werden alle Arten von Java- oder CSS-Code in einer einzigen Datei verschickt.

Datei Inlining – CSS, JavaScript und Bilder werden direkt in die HTML-Datei eingefügt.

Einige dieser Verbesserungen haben jedoch zur Folge, dass es unter Umständen zu deutlich längeren Ladezeiten kommt, als eigentlich notwendig wären. Beim sogenannten Head-of-Line-Blocking sorgt eine große Datei dafür, dass alle Anforderungen dahinter blockiert werden und so ein Server nicht optimal ausgelastet ist. In so einem Fall müssen viele kleinere Dateien nämlich hinter einer einzigen großen Datei zurückstehen, was zu unberechenbaren Latenzverzögerungen führt.
Microsoft und vor allem Google schlugen hier Übergangslösungen vor, von denen eine schließlich in die aktuelle Version HTTP 2.0 Einzug hielt.

SPDY – Wegweisende Entwicklung aus dem Hause Google

SPDY (von englisch speedy = schnell) ist ein experimentelles Übertragungsprotokoll, das vor allem auf mobile Datenübertragung und kurze Latenzzeiten optimiert ist. Wie HTTP auch benutzt SPDY eine TCP-Verbindung zur Datenübertragung. Allerdings baut SPDY nur eine einzige Verbindung auf, die dann über einen zusätzlichen Session Layer mehrere, ineinander verschachtelte Datenströme gleichzeitig verarbeitet. Dieses Vorgehen ist vor allem in Funknetzwerken mit schwankender Verbindungsqualität von großem Vorteil. Die drei wichtigsten Neuerungen von SPDY wurden schließlich auch in HTML 2.0 übernommen:

Mulltiplexing – Der Datenaustausch in beide Richtungen wird über eine einzige Verbindung abgewickelt.

Priorisierung – SPDY unterstützt die Priorisierung verschiedener Anfragen und ermöglicht so die schnellstmögliche Übertragungsreihenfolge von Daten.

Header Compression – SPDY komprimiert Frage- und Antwortheader, was zu einem schnelleren Verbindungsaufbau führt.

HTTP 2.0 – Zukunftssicher auch im mobilen Internet

Anders als das konkurrierende Protokoll Microsoft HTTP Speed+Mobility bildet SPDY in weiten Teilen die Grundlage für HTTP 2.0 und ist damit selbst obsolet geworden. HTTP 2.0 erlaubt eine noch größere Flexibilität bei der Datenübertragung und vor allem ihrer Priorisierung als SPDY. Zudem erfolgt die Übertragung noch sicherer und effizienter. Dabei enthält HTTP 2.0 dieselbe Semantik wie HTTP 1.1 und ist voll abwärtskompatibel. Neben den schon mit SPDY eingeführten Verbesserungen bietet HTTP 2.0 den Einsatz von SSL ohne Geschwindigkeitsverluste und Server-initiierte Datenübertragungen (Server push), was zu einer weiteren Optimierung der Serverlast führt.

Fazit

Performance ist für moderne mobile Webanwendungen das A und O. Gerade im mobilen Internet ist aber immer noch mit kurzfristigen Verbindungsabbrüchen zu rechnen. Das ursprüngliche Hypertext Transfer Protocol wäre diesen veränderten Bedingungen längst nicht mehr gewachsen. Als Konsequenz geht HTTP 2.0 neue Wege, indem es den kompletten Seitenaufruf über eine einzige Verbindung abwickelt, die nur so lange aktiv ist, wie die Webseite geöffnet ist. Damit beschleunigt HTTP 2.0 das Surfen spürbar und verbessert vor allem die Performance mobiler Webseiten und Services.

Sie haben weitere Fragen zur Optimierung von Latenzen im mobilen Netz? ! Mindtwo in Bonn berät Sie gerne.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch