Geschwindigkeit zählt
Zeit ist Geld. Das zählt gleich doppelt für E-Commerce. Einkäufer erwarten heute ein unterhaltsames Einkaufserlebnis und Geschwindigkeit ist ein großer Teil dessen. Nie zuvor waren Kunden ungeduldiger. Nie zuvor waren sie weniger nachsichtig. Wenn ein Onlineshop nicht die erwartete Servicequalität anbietet, werden sie in Rekordgeschwindigkeit einen alternativen Anbieter ausmachen, um die begehrten Produkte schnellstmöglich zu erhalten.
E-Commerce-Seiten auf Performance zu optimieren, wird durch massiv zunehmenden Anteile mobiler Surfern in Zukunft noch bedeutsamer. Zwar hat der mobile Traffic die Zugriffe mittels Desktop-Endgeräte bereits vor über einem Jahr überholt, mobile Konversionsraten liegen jedoch meist auf einem Bruchteil der Zahlen ihrer traditionellen Gegenstücke und die Wartezeit ist auch hier wesentlich. Gemäß Google verlassen 40% der mobilen Benutzer Shops, wenn eine Seite länger als 4 Sekunden lang lädt. Amazon wiederum hatte bereits 2006 festgestellt, dass nur 100 Millisekunden längere Ladezeiten mit 1% Umsatzrückgang einhergehen.
Die Gleichung ist also ein No-Brainer: Schnellere E-Commerce-Lösung bedeutet mehr Umsatz. Auf dem Desktop oder mobilen Endgeräten.
Was bedeutet also gute Geschwindigkeit?
Dummerweise gibt es auf diese Frage keine eindeutige Antwort. Es hängt alles vom jeweiligen Kunden, dem aktuellen Nutzungskontext, dem gewünschten Produkt und vielen anderen Parametern ab. Gemäß einer Erhebung von Pingdom benötigen die Top 50 E-Commerce Webseiten durchschnittlich 2,51 Sekunden zum Laden. Die schnellste Seite lädt dabei in weniger als einer halben Sekunden, während die langsamste länger als acht Sekunden benötigt. Nach meiner eigenen Erfahrungen bewegen sich die meisten Onlineshops in der freien Wildbahn eher im unterem Leistungssektor - da sind auch 10 Sekunden Ladezeit oder mehr nicht ausgeschlossen.
Was kann man nun also tun, um seine Ladezeiten zu verbessern? Dazu muss man zunächst verstehen, wie Seiten im Web funktionieren und wie dadurch Ladezeiten entstehen.
- Der Browser fragt zunächst die jeweilige Seite auf dem Server ab. E-Commerce-Seiten bestehen generell nicht aus statischen Dateien, die man bei Bedarf einfach vom Server laden könnte. Viel mehr werden sie durch Programmiersprachen wie PHP zum Abrufzeitpunkt generiert. Der Webserver nutzt PHP dazu, alle interessanten Informationen über Produkte, den Warenkorb, den aktuellen Benutzer usw. zusammenzutragen und ansprechend optisch aufzubereiten. Das beinhaltet oft eine ordentliche Portion Komplexität und verbraucht entsprechend viel Zeit.
Die meisten aktuellen Shop-Plattformen sind jedoch nicht schnell genug in der Generierung ihrer dynamischen Inhalte. Deshalb wurden in der Vergangenheit allerlei Hausmittelchen eingeführt, welche die Geschwindigkeitsprobleme lindern sollen. Die wichtigste Unterstützung stellen sogenannte Full-Page Caches dar, allen voran Varnish. Dabei wird der Inhalt einmal erstellt - was natürlich noch immer langsam ist - und anschließend im Arbeitsspeicher des Servers zwischengelagert. Das bedeutet, der arme erste Kunde sieht eine langsame Seite, aber alle nachfolgenden Besucher bekommen eine schnelle Seite präsentiert.
Full-Page Caching bringt jedoch einige Problemstellungen mit, die sich mit modernem E-Commerce unserer Meinung nach nicht mehr vereinbaren lassen:- Full-Page Caching macht dynamische Inhalte und damit Personalisierung deutlich schwieriger. Klar, es gibt Mechanismen wie Ajax oder ESI, mit denen man dynamische Inhalte in die statisch abgelegten Seiten integrieren, aber das hilft auch nicht, wenn die allgemeine Geschwindigkeit meines Systems im Eimer ist.
- Dazu kommt die zusätzliche Komplexität, die oft in einer Menge Zusatzarbeit und -zeit in der Entwicklung bedeuten. Entwickler müssen nun klarstellen, dass generierte Inhalte mit kontextspezifischen Ausgaben vereinbar sind. Aus meiner Erfahrung kann das mitunter einige Tage Arbeit für eine Funktion bedeuten, deren eigentliche Logik in wenigen Stunden erstellt war.
- Schlussendlich muss man sich außerdem vor Augen halten, dass ein großer Teil von E-Commerce-Funktionalität gar nicht vorgehalten werden kann. Produkte in den Warenkorb zu legen und später einzukaufen, bedarf spezifischer Logik und Berechnung.