Performance-Tipps für Shopware 5
Benutzt PHP 7!
Der Hinweis, grundsätzlich eine aktuelle PHP-Version zu verwenden, gilt natürlich weiterhin. Ab Shopware 5.1 unterstützt der Shopware Core PHP 7. Einige Zeit war es ein Problem, dass noch nicht alle Plugins einwandfrei mit PHP 7 funktionierten – mittlerweile haben die Plugin-Entwickler aber nachgezogen und es sind die allermeisten Plugins PHP 7 kompatibel. PHP 7 alleine bringt je nach Konfiguration gegenüber PHP 5.6 einen Performance-Gewinn von bis zu 50 Prozent.
PHP 7 und der Ioncube-Loader – gab es da nicht ein Problem?
Definitiv ja. Das Problem war, dass der Ioncube-Loader lange nicht für PHP 7 zur Verfügung stand. Das war übrigens auch einer der Gründe dafür, dass Shopware beim letzten Shopware Community Day mit Vorstellung der Shopware Version 5.2 die Abschaffung von Ioncube-Verschlüsselung (zumindest bei den eigenen Plugins) angekündigt hat. Mittlerweile gibt es einen stabilen Ioncube-Loader für PHP 7, der auch gut funktioniert.
Ein Problem bleibt allerdings noch: Shopware Plugins, die für Shopware Versionen vor 5.1 aus dem Community Store geladen wurden, sind unter Umständen nicht mit der neuen Ioncube-Version kompatibel. Für Plugins, die ab Shopware 5.2 geladen werden, gilt diese Einschränkung nicht mehr. Dieses Problem kann man umgehen, indem man zuerst auf Shopware 5.2 updated und dann alle Plugins zur Sicherheit neu aus dem Store lädt. (Neuinstallation ist nicht notwendig, es geht nur ums Herunterladen).
Auch der Hinweis auf APCu und ZendOpcache sind weiterhin aktuell. Wenn du bei Mittwald hostest, möchte ich dir die PHP 7 FPM mit Performance Plus ans Herz legen. Damit hast du optimale Voraussetzungen für einen schnellen Shop!
Auch ein MySQL-Update bringt Performance!
Die allermeisten bestehenden Shops werden vermutlich noch mit MySQL 5.5 oder 5.6 laufen. Auch hier ist ein Update auf MySQL 5.7 sinnvoll und bringt einen guten Performance-Schub.
Wenn du einen Mittwald vServer einsetzt, ist das Update ganz einfach:
- Lege übers Kundencenter eine neue MySQL 5.7 Datenbank in dem Account an, in dem auch Shopware installiert ist.
- Erstelle einen Dump der alten Datenbank – das geht am besten über SSH und mit dem Kommando mysqldump.
- Spiele den Dump in der neuen Datenbank ein – am besten auch über SSH
- Ändere den Datenbank-Namen und Datenbank-Server in der config.php deiner Shopware Installation
Wenn du einen Managed Server einsetzt oder du dir unsicher bist, hilft dir der Kundenservice gerne dabei.
HTTP-Cache oder Varnish?
Auch der Hinweis auf die Aktivierung des HTTP-Cache ist weiterhin brandaktuell und einer der wichtigsten Faktoren für Shopware Performance überhaupt. Das Aktivieren des HTTP-Caches wurde vereinfacht. Es reicht hier, den Shop in den „Produktivmodus“ zu versetzen.
Was ist jetzt also mit Varnish?
Der Shopware HTTP-Cache funktioniert im Grunde genauso wie ein Varnish. Vereinfacht gesagt, merkt sich der HTTP-Cache, welche Antwort Shopware auf eine bestimmte Anfrage gegeben hat und gibt diese einfach wieder aus, wenn die gleiche Anfrage noch einmal kommt und nichts dagegen spricht. Dabei werden nur bestimmte Bereiche der Seite wirklich dynamisch geladen, zum Beispiel der Warenkorb. Es macht deswegen in den meisten Fällen keinen Sinn, Varnish zu benutzen, wenn der HTTP-Cache aktiviert ist. Performance-technisch ist der Unterschied marginal.
Eine Ausnahme gibt es allerdings, bei welcher der Varnish alle seine Vorteile besser als der HTTP-Cache ausspielen kann. Nämlich wenn du zum Beispiel Lastspitzen durch Werbekampagnen hast oder generell einfach sehr viel Traffic auf dem Shop ist. Ein Varnish hilft dann dabei, die großen Massen von Zugriffen abzudämpfen, ohne Last auf den Webserver weiterzugeben.
Theme-Einstellungen für optimierten Pagespeed
Shopware 5 liefert CSS und JS im Standard schon zu jeweils einer Datei zusammengefasst aus. In den Einstellungen im Theme Manager sollte sich folgendes Bild zeigen:
Weitere Tweaks, die oft vergessen werden
Das Aufbauen des SEO- und Suchcaches sowie auch der Topseller passiert im Standard Live, also beim ersten ungecachten Aufruf. Das kann – gerade wenn es viele Artikel und/oder Bestellungen in der Datenbank gibt – schnell langsam werden. Das zeigt sich besonders, wenn der Shop bei geleertem oder abgelaufenem Cache sehr lange für das erste Laden braucht.
Die Aktualisierungsstrategie sollte auf jeden Fall bei SEO, Suche und Topseller auf Cronjob umgestellt werden. Ein entsprechender Cronjob sollte natürlich auch eingerichtet werden. Wie das für Shopware bei Mittwald geht, habe ich in unseren ersten Shopware Performance Tipps beschrieben.
Es sollte weiterhin das Standard-Plugin „CronRefresh“ aktiviert sein. Dieses räumt beim Cron-Durchlauf in der Datenbank auf – weniger Müll in der Datenbank kann für Performance nur förderlich sein. ;)
Falls ihr Produktexporte, bspw. für Preisportale verwendet, solltet ihr diese auch auf Cronjob umstellen und eine geeignete Cache-Zeit einstellen. Teilweise rufen Preisportale die Feeds wegen ihrer dezentralen Struktur oder aus anderen Gründen sehr häufig ab. Das belastet den Server natürlich (gerade, wenn ihr viele Artikel in die Feeds exportiert). Der Effekt kann mit geeigneten Cache-Einstellungen beim Feed abgedämpft werden.
Wenn das alles nichts hilft, kontrolliert auch die config.php im Hauptverzeichnis eurer Shopware-Installation. Wenn ihr dort Einstellungen wie hier in der Debug-Konfiguration entdeckt schmeißt sie im Live-System besser raus (Achtung, dabei vorsichtig sein und vorher immer eine Datensicherung der config.php anlegen!). Besonders ist hier template -> forceCompile -> TRUE und cache -> backend -> Black-Hole problematisch.
Fazit
Aktuelle Software ist das A und O! Mit einer aktuellen Shopware Version und PHP 7 FPM (P+) sowie MySQL 5.7 habt ihr beste Voraussetzungen für einen performanten Shopware Shop. Der HTTP-Cache ist essentiell. Und wenn ihr meine anderen Tipps noch beherzigt, könnt ihr euren Shopware Shop noch schneller machen. Shopware hat beim Community Day weitere Performance-Optimierungen für die Shopware Version 5.3 angekündigt, die sich vor allem auf den Pagespeed auswirken sollen. Hier lohnt sich also auch ein Update auf Shopware 5.3 (natürlich erst im Live-System, wenn die 5.3 final released ist und nicht mehr im RC-Status ist!).
Kommentare
Super, genau danach habe ich gesucht! Ich hoffe dass es mir einen großen Performance Schub bringen wird. Danke!
Hallo Philipp, nach deinem interessanten Beitrag hier werde ich mich zu der Upgrade Variante mit PHP7 und den weiteren tools hermachen. Danke für die Anleitung und Tipps. Gruß Otto