Vom Langstreckenläufer zum Sprinter: 8 Tipps, wie man die Performance eines Magento Online-Shops steigert
Eines der wichtigsten Themen im E-Commerce, wenn nicht vielleicht sogar das wichtigste Thema, ist die Performance eines Shopsystems. Eine Binsenweisheit in der Branche besagt, dass Kunden nicht bereit sind, länger als fünf Sekunden auf eine Seite in einem Shop zu warten. Je länger die Ladezeit auf einem Shopsystem, desto mehr Abbrüche verzeichnet die Statistik. Nutzer sind sogar eher gewillt, weitere fünf Minuten über Google und Co. nach dem gewünschten Produkt zu suchen, als auf der ersten Shopseite mehr als fünf Sekunden zu warten – da hilft dann auch die schickste Landing Page nichts mehr. Was das Open Source-Webshop-System Magento angeht, war die Performance eines der größten Probleme der letzten Monate – neben fehlenden offenen Unit Tests und fehlenden Zertifizierungsmöglichkeiten für Extensions. Doch ein Shopsystem auf Magento Basis muss nicht zwingend langsam sein. Für eine gute Performance sollten Shopbetreiber allerdings die folgenden acht Punkte berücksichtigen:
1. Aktualität ist Trumpf
Seit dem 9. Februar 2011 steht die Version 1.5.0.1 der Community Edition zum Download bereit. Enterprise Kunden können seit einiger Zeit auf die Enterprise Version 1.10 zurückgreifen. Beide Versionen haben im Core ein Refactoring vom Hersteller erfahren. An vielen Stellen wurde bei der Implementierung unnötiger Code entfernt, und einige Funktionen wurden neu und performanceorientiert programmiert. Auch wenn ein Update auf die aktuelle Version keine einfache Angelegenheit ist, die investierte Zeit und Mühe werden sich lohnen. Doch Vorsicht: Shopbetreiber, die noch in Version 1.3.x oder Enterprise 1.6.x unterwegs sind, sollten etwas mehr Zeit für das Update einkalkulieren. Auch sollte geprüft werden, ob alle eingesetzten Extensions für die gewünschte, aktuelle Magento Version vorliegen.
2. Weniger ist mehr
Viele Shops haben über ihre Lebenszeit hinweg eine Art Installationswut erlebt. Weil es so verlockend einfach ist, mal eben eine Extension zu installieren und auszuprobieren, werden oft Module und Extensions im Shop geladen, die gar nicht mehr im Einsatz sind. Auch weiß bei vielen Extensions im Shop keiner mehr, warum und wozu sie eigentlich da sind. Aufräumen kostet nicht viel Zeit, bringt den Shop aber in Sachen Performance deutlich weiter.
3. Weniger ist viel mehr
Shopbetreiber sollten nicht nur bei Extensions und Shopmodulen aufräumen. Auch die Shopseite selbst, das Frontend, birgt viel Optimierungspotenzial. Wurden die Grafiken des Webshops wirklich weboptimiert erstellt und abgespeichert? Muss es wirklich 500 KiB Flash Videos auf jeder Seite geben? Diese und weitere Fragen sollte sich jeder Shopbetreiber stellen. Sehr beliebt ist hier das Vorgehen, die Firefox Extension „Firebug“ zu installieren und sich dort im Reiter „Netzwerk“ alle geladenen Seitenelemente anzuschauen. Dort wird sehr übersichtlich angezeigt, wie lange welches Element geladen wurde und wie groß die einzelnen Bilder und Scripte sind.
4. Viel hilft viel
Das Einzige, was besser ist als Hubraum, ist noch mehr Hubraum. Und so kann man es mit seinem Server auch halten. Ein Shopsystem benötigt die entsprechende Basis und den entsprechenden Anschluss. Wer 500 Kunden gleichzeitig bedienen und dabei keine Ladezeitverzögerungen spüren will, der braucht das entsprechende Serverkonstrukt. Im Enterprise Segment sind das in der Regel Cluster, wobei die Webserver auf mindestens drei Servern verteilt hinter einem Loadbalancer stehen sollten. Die Datenbank wird ebenfalls auf einem weiteren Server ausgelagert und im Idealfall in einem DB Master/Slave Verbund angeschlossen. Ab Version MySQL 5.5 skaliert die Performance der Datenbank nochmals deutlich besser mit der eingesetzten Hardware, sodass 24 CPUs für einen DB Master keine Seltenheit mehr sind.
Auch wer sich fernab solcher Hosting-Dimensionen befindet und mit der Magento Community Edition unterwegs ist, sollte zumindest Webserver und Datenbankserver getrennt halten und auf Hardware Server setzen. Der Einsatz von virtuellen Servern hat sich – auch wenn der Preis oft verlockend ist – bislang nicht oder nur in Ausnahmen bewährt.
5. Cache, Cache, Cache
Magento kann die verschiedenen Caching-Technologien von Memcached, Xcache, APC und eAccelerator nutzen. Auch wenn die Einrichtung im ersten Moment schwierig anmutet, es ist fast schon Pflicht, einen Cache zur Performance-Optimierung einzusetzen. Geht es um das Ausliefern von Bildern und Grafiken, hat sich der Varnish Cache bewährt. Im Idealfall werden Bilder von einer anderen (Sub-)Domain geladen und über einen Varnish ausgegeben. Sehr beliebt ist darüber hinaus das Ausliefern von Bildern über einen oder mehrere CDN Server. Ein solches Content Distribution Network verteilt die Dateien über mehrere Server und entlastet so den Webserver der Magento Installation.
Shopbetreiber, die auf die Enterprise Version zurückgreifen, kommen in den Genuss eines Fullpage-Caches. Hierbei werden alle Shopseiten, abgesehen vom Warenkorb und vom Checkout-Prozess, in einen Cache gespeichert, sodass der Server beim Aufruf einer Produktliste oder einer Produktseite nur noch eine HTML-Seite ausliefern muss. Die Schattenseite der Fullpage-Cache Medaille betrifft die Aktualität der gecacheten Seiten. Rechtlich sensible Informationen wie die Verfügbarkeit eines Produkts sollte man gegebenenfalls via Ajax nachladen, um Kunden keine falschen Informationen zu geben.
6. Konfiguration der Umgebung
Auch außerhalb von Magento gibt es viele weitere Stellen, an denen sich eine Optimierung und eine Konfiguration lohnen, beispielsweise beim Apache2. Dieser lädt in der Standardinstallation häufig viele Mods mit, die man in der eigenen Umgebung gar nicht benötigt. Eventuell kann man an dieser Stelle sogar viel härter eingreifen und anstelle von Apache2 einen Ngix oder lighttpd einsetzen. Es bedeutet zwar relativ viel Konfigurationsarbeit, um einen Magento Shop mit diesen Webservern zum Laufen zu bringen, aber das Ergebnis lohnt sich. Die Aktivierung von mod_defalte oder zlib.output_compression bringt häufig entscheidende Millisekunden. Das Gleiche gilt für das Einstellen der mod_expire Daten für die Header im Apache2. Auch die Datenbank-Installation lässt sich optimieren. Häufig ist es eine Frage von einigen Lasttests, um die richtigen Einstellungen für Log-Einstellungen, Query-Cache etc. zu finden.
7. Fehler machen langsam
Eine ungewöhnlich große Bremse in Magento Shops sind 404-Fehlerseiten, also die typischen „Die Seite konnte leider nicht gefunden werden“-Fehler. In den Server Logs finden sich alle nötigen Hinweise, um herauszufinden, wo und warum diese 404-Fehler auftreten. Zudem werden häufig Grafiken in Templates oder CSS Dateien an der falschen Stelle geladen. Der Server kann die Datei dann nicht finden und quittiert dies mit einer 404-Fehlermeldung, die ein Shopbetreiber vielleicht nie bemerkt. Denn wer vermisst schon eine durchsichtige 2×2 Pixel Datei?
8. Planung geht über alles
Nicht vergessen werden sollte, wie sehr auch der menschliche Faktor die Performance beeinflussen kann. Stichwort: OSI Layer-8 Problematik. Jeder noch so optimierte und performante Shop wird in die Knie gehen, wenn beispielsweise um acht Uhr morgens ein Newsletter mit „20% Rabatt auf alles“ rausgeht und bis 14 Uhr noch der Import der letzten Produkt-Updates läuft.
Berücksichtigt ein Betreiber diese acht Punkte bei der Planung seines Online-Shops oder bei der Planung kommender Versions-Updates, dann ist es auch mit Magento möglich, einen mehr als ausreichend performanten Online-Shop zu realisieren. Allen Unkenrufen zum Trotz ist Magento keineswegs eine bleiernde Ente, auch wenn man an der einen oder anderen Stelle mal mehr oder weniger kräftig anschubsen muss. Die Umsetzung der Tipps bedeutet zwar zunächst einiges an Zeit- und Arbeitsaufwand, aber die Mühe lohnt sich. Die (potenziellen) Kunden werden es danken – mit höherer Zufriedenheit und längeren Verweildauern, was sich wiederum positiv auf Konversionsraten und Umsätze auswirkt. Also, worauf warten Sie noch? Machen auch Sie Ihrem Online-Shop Beine!