Webserverumgebung

Die Verarbeitungszeit im Backend macht zwar nur 10 bis 20 Prozent der Ladezeit aus [Sou07], dennoch kann dieser Einfluss zu schlechten Ladezeiten einer Website führen. Dies passiert beispielsweise wenn die Servergeschwindigkeit, die Verarbeitungszeit von PHP oder die Datenbankabfragen zu langsam erfolgen [Ste12]. Durch die Wahl des Hosting-Anbieters und die Art des Hostings lassen sich diese Faktoren beeinflussen. Die Auswahl reicht von einem Shared-Webhosting über V-Server bis hin zu dedizierten Root-Servern. Bei den Shared-Webhosting Angeboten stehen die Kapazitäten des Webservers nur begrenzt zur Verfügung. Prozessor, Arbeitsspeicher und die Festplatten des Webservers werden mit anderen Kunden des Hosting-Anbieters geteilt. Die Auslastung ist unbekannt und kann zu Performance-Problemen führen [KR13], zudem besteht keine Möglichkeit die Konfiguration des Webservers direkt zu beeinflussen [CIW15]. Anpassungen an der Konfiguration lassen sich in den meisten Fällen ausschließlich über eine HTACCESS-Datei vornehmen [CIW15]. V-Server und Root-Server garantieren hingegen mehr Hardware-Kapazitäten und lassen sich, sofern es sich nicht um extern betreute Managed Server handelt, komplett eigenständig konfigurieren.

Neben der Hardware stellt auch die Software des Webservers einen Ansatzpunkt zur Optimierung dar. Das Betriebssystem ist die Schnittstelle zur Hardware und sollte richtig konfiguriert und stets aktuell gehalten werden, um Sicherheits- und Performance-Probleme zu vermeiden. Der Apache HTTP Server ist die am häufigsten eingesetzte Webserver-Software, jedoch werden von großen Websites vermehrt Alternativen wie Lighttpd oder Nginx eingesetzt, die sich bei der Verarbeitung der Anfragen unterscheiden. Während der Apache prozessbasiert arbeitet und jede eingehende Anfrage in einem eigenen Betriebssystem-Thread verarbeitet, erfolgt die Verarbeitung der Anfragen bei Nginx und Lighttpd asynchron über die Instanzen einer gemeinsamen Warteschlange. Dadurch werden weniger Ressourcen benötigt und mehrere Anfragen können gleichzeitig bearbeitet werden [KR13].

Die Nutzung von Redirects zur Umleitung von einer Anfrage auf eine andere URL führt dazu, dass mehr Ladezeit als bei einem direkten Abruf benötigt wird [KR13]. Dies gilt sowohl für den Abruf von HTML-Dokumenten als auch für alle sonstigen Ressourcen einer Webseite und sollte nach Möglichkeit vermieden werden [Sou07]. Nachteilig wirken sich Redirects vor allem bei mobilen Datennetzen aus, da dort HTTP-Anfragen die Ladezeit wahrnehmbar erhöhen [KR13].

Ein weiterer Ansatzpunkt serverseitiger Optimierungen ist die für dynamische Websites erforderliche Skriptsprache PHP. Lorna Jane Mitchell hat in mehreren Versuchen die Performance verschiedener PHP-Versionen verglichen und kam zu dem Ergebnis, dass sich die Performance mit jeder neueren Version verbesserte. Getestet wurden die PHP-Versionen 5.3, 5.4, 5.5 und 5.6. Während eine Testdatei unter PHP 5.3 zur Ausführung 3,9 Sekunden benötigte, erfolgte die Ausführung mit PHP 5.6 in 2,4 Sekunden und so-mit 1,5 Sekunden schneller [Mit14].

Abbildung 3.1: Vergleich der Ausführungszeit verschiedener PHP-Versionen nach [Mit15]

Eine signifikante Verbesserung der Performance zeigte Lorna Jane Mitchell in einem weiteren Versuch mit einer anderen Testdatei und der vorläufigen Alpha-Testversion von PHP 7 (siehe Abbildung 3.1) [Mit15].

Bei dem Abruf einer Webseite sendet der Client zur Übertragung einzelner Ressourcen mehrere HTTP-Anfragen an den Webserver. Diese einzelnen Übertragungen führen dazu, dass die Verbindung jeweils neu aufgebaut werden muss. Durch den Connection-Header Keep-Alive kann dieser Vorgang verhindert werden. Mit Hilfe von Keep-Alive kann die Verbindung zwischen dem Client und dem Webserver offengehalten werden, um eine effizientere Übertragung der Ressourcen zu erreichen sowie Verzögerungen bei der Ladezeit zu vermeiden [Ber15]. Sowohl der Browser als auch der Server sind in der Lage die bestehende Verbindung jederzeit zu schließen [Sou07]. Da durch viele offene Verbindungen der Speicherverbrauch des Webservers steigt [Dav13], werden vier bis acht Gigabyte Arbeitsspeicher zur Gewährleistung der Serverperformance empfohlen [CIW15]. Keep-Alive ist bei vielen Webservern bereits standardmäßig aktiviert. Dies kann in den Headers der Entwickler-Tools des Browsers Chrome geprüft und gegebenenfalls per HTACCESS-Datei mit dem folgenden Code aktiviert werden.

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Performanceoptimierungen der Webserverumgebung haben vorwiegend Auswirkungen auf die Time to First Byte, da sie die Verarbeitungs- und Antwortzeiten für das HTML-Dokument beeinflussen. Darüber hinaus kann auch das Rendering im Browser durch die Ladezeit einzelner Ressourcen beeinflusst werden, sofern für deren Auslieferung kein Content Delivery Network Verwendung findet.

Kommentare sind geschlossen.