Frisch installiert, voller Tatendrang und das Backend ist nur halb so motiviert wie Du?
Als Shopware 6 Agentur kennen wir die Probleme im Tagesgeschäft mit langsamen Backends nur zu gut. Ebenfalls wirken sich diese auf die Performance in deinem Frontend und mitunter auch auf den Google-Page-Speed-Index aus.
Daher wollen wir hier mit Dir unsere Erfahrungen teilen und eine Checkliste erstellen, die stetig für Shopware 6 erweitert wird.
Grundlegende Server-Einstellungen für Shopware 6
Nginx ist im Regelfall deutlich schneller als Apache2 und kann auch mehr Anfragen/Besucher parallel begrüßen. Hoster wie wir oder auch Timme Hosting sowie Schaal IT setzen für die Shopware-Lösungen auf Nginx und fahren damit sehr gut. Wer einen Provider nutzt mit Plesk als Verwaltungsoberfläche kann meist zwischen beiden wechseln und sollte in einer Testumgebung einfach mal das Ganze benchmarken.
PHP-Version und Einstellungen für Shopware 6
PHP 8 ist Pflicht und sollte unbedingt genutzt werden. Wer mit PHP 7.4 arbeitet, muss mit der Konsequenz der deutlich schlechteren Ladezeiten leben.
Sollte Dein Shop nicht mit PHP 8 laufen, erstelle eine Kopie in einer Testversion und prüfe, welche Plugins hier nicht kompatibel sind. Suche anschließend nach Alternativen.
PHP Konfiguration im Detail
Mit folgenden Einstellungen in der PHP.ini haben wir in einem normalen Shop mit 5 – 15 Plugins und 2 – 3.000 Artikeln die beste Performance erzielen können:
post_max_size = 100M
upload_max_filesize = 100M
max_execution_time = 1200
max_input_time = 1200
magic_quotes_gpc = Off
file_uploads = Yes
max_file_uploads = 20
short_open_tag = On
phar.readonly = off
session.auto_start = off
suhosin.session.cryptua = off
zend.ze1_compatibility_mode = off
max_input_vars = 6000
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
memory_limit = 2048M
upload_max_filesize = 64M
post_max_size = 128M
opcache.enable=1
opcache.memory_consumption=1024
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=15000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
allow_url_fopen=1
max_execution_time = 3600
(Bold = besonders wichtig, benötigt aber auch ausreichend Server-Leistung)
opcache.revalidate_freq=0 FÜR DEN LIVE-Betrieb bitte!
Außerdem solltest Du Dich mit Deinem Provider in Verbindung setzen und die Datenbank zusätzlich über Redis laufen lassen. Ladezeiten sollten von nun an im Backend ein Fremdwort sein. Sollte Dein Shop weiterhin träge bleiben, gilt es, die Umgebung zu durchleuchten. Nutzt Du Shared Hosting für 15 – 30 €, ist die Hardware vermutlich einfach überlastet. Deine Umgebung sollte 4 CPU Kerne oder mehr haben. Ebenfalls sind wir keine Fans von Virtualisierungen, sondern empfehlen spätestens bei einem täglichen Umsatz von 5 – 10.000 € ein dediziertes Hosting, damit Dir die Hardware-Leistung allein gehört.
Shopware 6 Cronjobs anlegen
Shopware benötigt mehrere Cronjobs, um sauber zu laufen.
- Scheduled Task (damit das System so läuft, wie es soll) – Mind. alle 2 Stunden!
- Cache leeren – Shopware 6 leert den kompletten Cache nicht von allein. Daher wird das System immer größer – Wir empfehlen das Leeren einmal wöchentlich z. B. Mittwochmorgens um 3.00 Uhr. (Siehe auch Shopware 6 Doku -> Cache automatisch leeren)
Achte darauf, dass Deine Cronjobs, Timeout-Limits haben. Andernfalls können die Cronjobs ewig laufen und Du müllst Dir das System zu. Die Konfiguration und das Einrichten ist abhängig vom jeweiligen Hoster.
Wichtig ist, dass Du ein Memory-Limit (z. B. 2048 MB) setzen kannst und ein Time-Limit (z. B. 7080 sec.).
Shopware 6 Frontend-Performance optimieren
Nach der grundlegenden Optimierung der Hosting-Umgebung erfolgt jetzt die Optimierung im Frontend.
Auf Basics, wie Bilder optimieren gehen wir jetzt nicht im Detail ein. Dennoch solltest Du dies im Auge behalten, weil die richtige Datengröße wichtig ist. Interessanter ist hier jedoch der Part, ob Du die Bilder bereits in einem CDN auslagerst. Hierzu bieten sich entweder Dienste wie Kraken oder Cloudflare an, wobei Cloudflare durchaus interessanter ist, was die Gesamtheit der Optimierung angeht (es gibt natürlich auch noch andere Plugins, die hier Shopware 6 supporten können). Da man aber den wenigsten Aufwand und das beste Ergebnis mit Cloudflare hat, empfehlen wir Dir die Einrichtung des grundsätzlich kostenlosen Dienstes.
Die Vorteile der kostenlosen Version sind bereits:
Kurz: Du musst hier nur Deine Domain via Namensserver eintragen und dann die Records von dort verwalten. Die Domain selbst bleibt bei Deinem Provider in der Verwaltung. Dadurch wird Dein Server zusätzlich entlastet und Anfragen werden aus dem DNS-Cache geworfen, wodurch die Antwortzeiten weiter verkürzt werden.
Wer es sich hier einfach machen will, bucht dann die Pro-Version für ca. 20 € mtl. und profitiert von weiteren Optimierungen sowie dem Konvertieren der Bilder in WebP in einer verlustfreien Qualität oder wahlweise in einer Verlustbehafteten. WebP ist der aktuelle Standard was Bilderoptimierung für Browser angeht, und zeigt somit die optimale Version Deiner Bilder an. Dank Cloudflare muss hier nichts von Hand umgewandelt werden – dies passiert automatisch. Deine Bilder selber bleiben im Shopware-Shop im Original vorhanden.
- Erweitertes Caching außerhalb Deines Servers wodurch Daten schneller bereitgestellt werden
- HTTP/3 Support
- Gzip
- Kompilieren und Zusammenfügen von CSS und JS-Dateien
- DNS-Caching
- Anonymisieren Deines Servers
- und diverse weitere Tools
Lazy-Loading für Deinen Shopware-Shop
Mit Lazy-Loading werden Bilder nachgeladen und Dein Shop muss initial weniger Daten laden, um das Frontend zu laden.
Hier freut sich nicht nur der Besucher, sondern auch der Google PageSpeed-Index.
Achte aber darauf, wie sich das mit anderen Tools verhält. Bei unserem Test haben wir gemerkt, dass das direkte Ausspielen über Cloudflare ohne Lazy-Load das bessere Ergebnis liefert. Dies ist jedoch von Projekt zu Projekt unterschiedlich!
Bitte bedenke, dass es sich hier um Empfehlungen unsererseits handelt und wir bei Problemen o.Ä. natürlich keine Haftung übernehmen können.
Weitere Schritte folgen hier nach und nach.
Performance-Ergänzung ab 6.4.18 – 6.5 .6.6
- Redis-Datenbank verbinden ist ein Gamechanger für Front und Backend (hier gilt die Doku von Shopware zu befolgen! -> LINK
- Elastic Search ab ca. 7000 Produkten für den Backend/Admin und Frontend sorgt für ein Suchen ohne Ladezeit und schnelleres Laden der Produktkategorien im Frontend
- Das kostenlose Plugin Tools zeigt dir, wo es brennt direkt im Backend: