Das quelloffene Webshop-System Magento ist bekannt für seine Performance-Probleme. Wer die folgenden acht Tipps beherzigt, kann Abhilfe schaffen.
von Ralf Lieser, Leiter Quality Assurance beim Systemhaus Netz98 New Media GmbH in Mainz.
Eines der wichtigsten Themen im E-Commerce ist die Performance des gewählten Shop-Systems. 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 ist, desto mehr Abbrüche verzeichnet die Statistik. Nutzer sind sogar eher bereit, weitere fünf Minuten über Google und Co. nach dem gewünschten Produkt zu suchen, als auf der ersten Shop-Seite mehr als fünf Sekunden zu warten - da hilft auch eine besonders attraktive 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 ebenfalls nicht vorhandenen Zertifizierungsmöglichkeiten für Extensions. Doch ein Shop-System auf Magento-Basis muss nicht unbedingt langsam sein. Für eine gute Performance sollten Shop-Betreiber allerdings die folgenden acht Punkte berücksichtigen:
1) Aktualität ist Trumpf
Seit dem 9. Februar 2011 steht die Version 1.5.1.0 der Community-Edition zum Download bereit. Kundenunternehmen können seit einiger Zeit auf die Enterprise-Version 1.10 zurückgreifen. Beide Versionen hat der Hersteller im Kern einem Refactoring unterzogen.
An vielen Stellen wurde bei der Implementierung unnötiger Code entfernt, einige Funktionen wurden neu und leistungsorientiert programmiert. Auch wenn ein Update auf die aktuelle Version keine einfache Angelegenheit ist, wird die inves-tierte Zeit und Mühe belohnt. Doch Vorsicht: Shop-Betreiber, 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 Erweiterungen 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) Noch weniger ist viel mehr
Shop-Betreiber sollten nicht nur bei Extensions und Shop-Modulen aufräumen. Auch die Shop-Seite selbst, das Frontend, birgt viel Optimierungspotenzial. Wurden die Grafiken des Webshops wirklich Web-optimiert erstellt und abgespeichert? Muss es eigentlich so viele Flash-Videos auf jeder Seite geben? Diese und weitere Fragen sollte sich jeder Shop-Betreiber 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 übersichtlich angezeigt, wie lange welches Element geladen wurde und wie groß die einzelnen Bilder und Skripte sind.
4) Bei Servern klotzen
Das Einzige, was besser ist als Hubraum, ist noch mehr Hubraum. Und so kann man es mit seinem Server auch halten. Ein Shop-System benötigt eine ausreichende Basis und den entsprechenden Anschluss. Wer 500 Kunden gleichzeitig bedienen und dabei keine Ladezeitverzögerungen spüren will, der braucht geeignete Server-Sys-teme im Hintergrund. Im Enterprise-Segment sind das in der Regel Cluster, wobei die Web-Server auf mindestens drei physische Server verteilt hinter einem Loadbalancer stehen sollten. Die Datenbank wird ebenfalls auf einen 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, so dass 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 arbeitet, sollte zumindest Web-Server und Datenbank-Server getrennt halten und jeweils 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.
Cachen, konfigurieren und planen
5) Cache, Cache, Cache
Magento kann die verschiedenen Caching-Techniken von Memcached, Xcache, APC und eAccelerator nutzen. Auch wenn die Einrichtung im ersten Moment schwierig anmutet, ist es 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 Rechner und entlastet so den Web-Server der Magento-Installation.
Shop-Betreiber, die auf die Enterprise-Version zurückgreifen, kommen in den Genuss eines Fullpage-Caches. Hierbei werden alle Shop-Seiten, abgesehen vom Warenkorb und vom Checkout-Prozess, in einen Cache gespeichert, so dass 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 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 zu optimieren und konfigurieren lohnt, 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 Web-Servern 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 Datenbankinstallation lässt sich optimieren. Häufig ist es eine Frage von einigen Lasttests, um die richtigen Einstellungen für Logs, Query-Cache etc. zu finden.
7) Fehler machen langsam
Eine ungewöhnlich große Bremse in Magento-Shops sind 404-Fehlerseiten, also das typische "Die Seite konnte leider nicht gefunden werden". In den Server-Logs finden sich alle nötigen Hinweise, um herauszubekommen, wo und warum die-se 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 Shop-Betreiber vielleicht nie bemerkt. Denn wer vermisst schon eine durchsichtige 2x2-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 8 Uhr morgens ein Newsletter mit "20 Prozent Rabatt auf alles" versandt wird und bis 14 Uhr noch der Import der letzten Produkt-Updates läuft.
Fazit
Berücksichtigt ein Betreiber die-se acht Punkte bei der Planung seines Online-Shops oder der Vorbereitung kommender Versions-Updates, dann ist auch mit Magento ein mehr als ausreichend performanter Online-Shop machbar. Allen Unkenrufen zum Trotz ist Magento keineswegs eine bleierne Ente, auch wenn man das System an der einen oder anderen Stelle anschubsen muss.
Die Umsetzung der Tipps bedeutet zwar einigen Zeit- und Arbeitsaufwand, aber die Mühe lohnt sich. Die (potenziellen) Kunden werden es danken - mit höherer Zufriedenheit und längeren Verweildauern, die sich positiv auf Konversionsraten und Umsätze auswirken. (ue/cw)
Dieser Artikel erschien in der ChannelPartner-Schwesterpublikation COMPUTERWOCHE