Ladezeiten Supergau – Warum Ihre Seite schnell sein sollte

Juli 16, 2012 by  
Filed under Analyse, Grundlagen, Optimierung

Ladezeiten eine WebseiteAus aktuellem Anlass habe ich beschlossen etwas zum Thema Ladezeiten zu schreiben. Wie einige sicher wissen crawlen wir mit unserem Strukturanalysedienst strucr.com meist große Webseiten und gehen dabei sehr tief. Oft sind die gecrawlten Webseiten in großen Bereichen extrem langsam. Teilweise ist die Performance an einigen Stellen so schlecht, dass mehrere Sekunden vergehen bis der HTML-Code ausgeliefert ist und ein Crawl mit einigen wenigen Requests die Seite spürbar langsamer werden lässt. Scheinbar ist die Performance der Webseite bei den meisten Firmen noch immer kein Thema.

Ladezeiten sollten ein Thema sein:

Argumentiert man bei Ladezeiten mit Usability, Ressourcenverbrauch oder möglichen Einnahmesteigerungen so stößt dies meist auf taube Ohren. Es geht aber bei der Performance von Webseiten auch darum Schreckensszenarien wie das folgende (frei erfunden) zu vermeiden:

Ein 13 jähriger Bengel hat sich über Ihre Webseite geärgert und möchte Sie dies spüren lassen. Da seine Ressourcen stark eingeschränkt sind überlegt er sich, wie genau er die Seite möglichst effizient lahmlegen kann. Er sucht sich also genau den Typ von Unterseiten heraus, die überdurchschnittliche Ladezeiten aufweisen, und ruft von diesen so viele wie möglich in kurzer Zeit ab. Ihre Seite geht wegen schlecht performender Unterseiten in die Knie obwohl für den Betrieb der Seite mehrere Server zur Verfügung stehen und der Angriff stümperhaft und gerade mal mit einer einzelnen DSL-Leitung durchgeführt wird.

Durch schlechte Ladezeiten droht also schnell mal ein kompletter Ausfall der Seite. Ladezeitenprobleme sind mitunter Sicherheitsprobleme und diese sollten eine hohe Priorität haben und mit ausreichend Ressourcen abgearbeitet werden.

Die Problemanalyse und Problembehebung:

Die Aufgabenstellung ist denkbar einfach. Zunächst müssen die langsamen Seiten identifiziert werden. Dafür kann entweder ein Crawler benutzt werden, der in der Lage ist die Antwortzeiten zu erfassen (z.B. strucr.com), oder aber man baut einfach ein simples Logging der Zeiten in den Code der Webseite ein. Sobald man eine langsame Seite gefunden hat, muss man sich im Detail anschauen was an der Seite langsam ist (Debugger nutzen) und dann Abhilfe schaffen.

Hier einige Optimierungsansätze:

  • Häufig haben Webseiten Probleme mit langsamen Datenbankabfragen. Oft lassen sich die Abfragen optimieren indem sie einfach anders geschrieben werden. Manchmal fehlen auch einfach nur die Indizes. Viele Datenbankserver sind darüber hinaus falsch konfiguriert und können daher Anfragen nicht performant beantworten.
  • Bei PHP-Seiten fehlt häufig ein sogenannter Opcode-Cache der den interprätierten Code zwischenspeichert. Der Code muss daher ständig neu übersetzt werden was zu deutlichen Verzögerungen führt.
  • Vereinzelt wird bei Seiten auf externe Daten zugegriffen anstatt diese lokal vorzuhalten oder zwischenzuspeichern.
  • Paginierte Inhalte sind oft nicht in der Seitenzahl beschränkt und damit auf den hinteren Seiten zwangsweise deutlich langsamer. Denn dort werden in der Regel die Inhalte datenbankseiting bis zu der betreffenden Seite vorbereitet und dann die entsprechende Anzahl Datensätze übersprungen. Auf der letzten Seite bedeutet das dann einen Full Table Scan auf einer temporären Tabelle. Ein Performance-Alptraum.
  • Statt den schnellen und optimierten Funktionen der Programmiersprache werden oft eigene Funktionen geschrieben die dann langsamer sind.

Und das Beste zum Schluss:

Verbesserte Usability, niedrigerer Ressourcenverbrauch oder möglichen Einnahmesteigerungen gibt es bei der Beseitigung des Sicherheitesproblems nun gratis mit dazu.

css.php