Die etablierte E-Commerce-Plattform Shopware wurde erstmals 2004 entwickelt und steht sowohl als Open-Source-Version als auch in kommerzieller Ausführung bereit. Das internetbasierte Shopsystem bietet ein breites Funktionsspektrum, das sich über zahlreiche Plug-ins noch steigern lässt. Mit der Komplexität gehen unter hoher Last oftmals Performance-Probleme einher. Daher stellt sich die Frage, welche Shopware-Performance-Tipps und Tricks hilfreich sind.
Problematik der hohen PHP-Last
Ein hoher Teil der Systemlast beim laufenden Betrieb von Shopware ist in den PHP-Prozessen zu finden. Diese können eine so große Last erzeugen, dass nur noch wenig Performance für die Datenbank oder den Webserver übrigbleibt. Dies ist der Fall, obwohl ab Shopware 5 kaum PHP-Scripts mehr aufgerufen werden sollten, da Seiten vollständig aus dem Cache geladen werden. Dies gilt jedoch nicht für Aufgaben, die das Kundenkonto betreffen oder den Prozess des Checkouts. Auch nachgeladene Informationen, etwa der Ajax-Warenkorb oder die gesamte Suche verlaufen dynamisch. Daher erfolgt der Datenbankzugriff hier über PHP.
Grundsätzlich empfiehlt sich daher im Hinblick auf die Performance die Nutzung einer stets aktuellen Version von PHP. In Abhängigkeit der verwendeten Plug-ins und von deren Kompatibilität sollte die aktuellste PHP-Version ausgewählt werden. Bei der PHP-Handhabung kann zudem ein Bytecode-Cache die Performance erhöhen. Dies sind nützliche Extensions für PHP aus den Bestandteilen ZendOpcache und APCu. Mit Hilfe des ZendOpcaches ist dafür gesorgt, dass nicht bei jeder einzelnen Anfrage die betroffenen PHP-Dateien neu geladen und kompiliert werden müssen. Die Komponente APCu stellt eine User-Cache-Extension dar.
Performance-Steigerung verspricht auch die Nutzung der aktuellen MySQL-Version. Die für Produktivzwecke entworfene Major-Version bietet Verbesserungen hinsichtlich der Ausführung von Datenbank-Lese-Zugriffen sowie SubSelects und Joins.
Möglichkeiten der Performance-Messung
Ein Indikator für die Performance sind etwa die angegebenen Ladezeiten. Diese sind Abweichungen in Anbetracht der Anzahl und Struktur des Shops sowie dem gegenwärtigen Traffic unterworfen. Im Sinne vergleichbarer Ergebnisse kann das Demo-Daten-Package von Shopware als Grundlage für Performance-Tests genutzt werden. Dies kann etwa über Firebug geschehen, eine Firefox-Extension. Diese Erweiterung ermöglicht die Identifikation von Fehlern, das Monitoring der Performance sowie die direkte Bearbeitung von Webseiten. Nach der Installation von Firebug können die Ladezeiten einzelner Webseiten-Bestandteile über den Netzwerk-Tab eingesehen werden.
Von Bedeutung ist hierbei die Ladezeit der Webseite als solcher. Diese wird im Allgemeinen als erster Eintrag in dieser Liste geführt. Vergleichbare Ergebnisse und die Bildung von Mittelwerten sind möglich, indem Startseite, Detailseite und Listing mehrmals hintereinander aufgerufen werden.
Aktivierung und Konfiguration des HTTP-Caches
Schon seit der Standardkonfiguration der Shopware-Version 4.1 liefert die E-Commerce-Plattform einen Frontend-Cache ab Werk. Im Allgemeinen sorgt der Cache durch ein Caching der Ausgabe für eine schnelle Ausführung der Shop-Aufgaben direkt aus dem Cache. Allerdings ist der HTTP-Cache zu aktivieren und korrekt zu konfigurieren.
Die Aktivierung und Konfiguration funktioniert bei Shopware im Backend in der Rubrik „Einstellungen“ unter dem Reiter „Caches / Performance“. Die Einstellungen unterscheiden sich in den verschiedenen Shopware-Versionen nur unerheblich voneinander. In Shopware 4 findet sich nach dem Reiter der Einstellungen direkt der Reiter HTTP-Cache, in dem die Option „HttpCache aktivieren“ mit einem Häkchen bestätigt werden. Unter Shopware 5 nennt sich die gleiche Option „Shop im Produktivmodus verwenden“. Diese kann mit einem Radiobutton aktiviert werden.
Die Kategorie der Einstellungen beinhaltet zudem eine Checkbox namens „Automatische-Cache-Invalidierung“. Bei Aktivierung kommt es zu einer automatischen Invalidierung der im Cache befindlichen Artikeldaten. Diese Invalidierung greift etwa dann, wenn am Artikel Änderungen vorgenommen werden.
Weiterhin wichtig für die Konfiguration sind die Einstellungen „Nicht gecachte Controller Tags“ sowie „Definition der Cache Zeiten“. Über die erste Einstellung können Anwender definieren, welche Controller nicht gecached werden, sobald bestimmte Tags in einer Session auftreten. So ist etwa in der Standardeinstellung die Startseite beziehungsweise das „frontend index“ mit dem Tag „price“ versehen. Taucht nun ein Anwender auf, der in eine bestimmte Kundengruppe gehört, für die bestimmte Preise gelten, so müssen die richtigen Preise angezeigt werden. Weichen die Preise von denen der Standard-Kundengruppe ab, so soll in diesem Falle gerade nicht die Startseite vollumfänglich aus dem Cache geladen werden. In der Einstellung der „Definition der Cache Zeiten“ wird nach individueller Maßgabe festgelegt, welche Zeitdauer der Cache für bestimmte Webshop-Bereiche in Anspruch nimmt.
Einrichtung und Aktivierung von Cronjob
Bei Shopware gibt es gegenwärtig eine Vielzahl von verschiedenen Prozessen, die bei jedem Aufruf einer Seite ausgeführt werden. Hierzu gehören etwa die Erzeugung von Links für die SEO oder der Aufbau von Subcaches. Auch die Generierung von Funktionen wie der Aufstellung von Topsellern oder von Kategorien von Produkten, die sich Kunden ebenfalls angesehen haben.
Hierbei empfiehlt es sich, zu prüfen, ob diese Prozessfunktionen genutzt werden. In Abhängigkeit davon kann eine Umstellung von Live auf Cronjob sinnvoll sein. Die Einstellung Live bewirkt eine Aktualisierung pro Seitenaufruf, während Cronjob eine gesammelte beziehungsweise zeitgesteuerte Aktualisierung durchführt. Das Software-Backend erlaubt die Umstellung von Live auf Cronjob über den Reiter „Einstellungen“ durch einen anschließenden Klick auf „Caches/Performance“. Hierin befindet sich wiederum ein Reiter „Einstellungen“, in dem Cron aktiviert und eingerichtet werden kann.
Hierbei hat Shopware ab Werk bereits einige Cronjobs vorgefertigt. Diese beherrschen etwa die Funktionen des Aufräumens und des automatischen Leerens des Cache. Zur Aktivierung dieser Cronjobs muss zunächst das entsprechende Cron-Plug-in aktiviert werden. Dieses befindet sich im Plug-in-Manager unter „Shopware-Erweiterungen“ und ist mit einem Klick aktiviert. An dieser Stelle können weitere Einstellungen vorgenommen werden, die den Aufruf der Cronjobs absichern. Dieses Plug-in ist bei manchen Installationsweisen von Shopware bereits vorab aktiviert.
Der richtige Hoster für Shopware
Für die Performance von Shopware ebenso relevant ist die Wahl eines geeigneten Hosters. Dieser sollte genau zum Arbeitsbereich und Einsatzzweck passen. Zudem empfiehlt sich ein Upgrade-Pfad, damit der Hoster auch mit möglicherweise wachsenden Anforderungen umgehen kann. Zu den wesentlichen Kriterien eines geeigneten Hosters gehört die Eignung für Shared Hosting. Virtual Server (vServer) und Dedicated Server bieten sich ebenfalls an. Der Software Stack sollte für die Shopware-Performance-Tipps geeignet sein. Zudem empfiehlt es sich, bei der Hoster-Wahl darauf zu achten, dass der Hoster bereits Erfahrungen mit Shopware und im Idealfall bereits Referenz-Shops mit Shopware nachweisen kann.
Als in Regensburg ansässige Web-Agentur bietet die Internetfabrik umfassende Online-Lösungen für den kompetenten Betrieb von Web-Shops. Auch auf Shopware basierende Angebote gehören zum Leistungsumfang. Die Internetfabrik bietet zudem Lösungen rund um OXID sowie die Frameworks Symfony und TYPO3.
Danke für die Mühe, die Sie gemacht haben, um das alles zusammenzutragen. Das sind wirklich sehr gute Infos.
Lg Duvar
Wie wichtig ist die Nahe des Hostinganbieters für den Onlineshop? z.B. wenn ich in Zürich bin und der Hostanbieter in München. Oder sollte es am besten gleich in der gleichen Stadt sein?