Viele Shops mit Shopware 6 laden langsamer, als sie müssten. Meist liegt es nicht an der Plattform, sondern an Server, Konfiguration und Shop-Setup, die nicht zusammenpassen. Dieser Guide zeigt die Maßnahmen, mit denen wir Shops auf Shopware 6.5, 6.6 und 6.7 schneller machen: von AVIF-Bildern über Redis und OpenSearch bis zu php.ini, PHP-FPM und Datenbank.
Ladezeiten kosten im E-Commerce Besucher, Conversions und Rankings. Die Empfehlungen stammen aus Projekten mit über 250.000 Produkten, 10 Sprachen und komplexen Variantenstrukturen.
Gilt für: Shopware 6.5, 6.6 und 6.7, selbst gehostet (Self-Hosted / On-Premise). Die Empfehlungen richten sich an Shopbetreiber und Agenturen mit Zugriff auf die Serverkonfiguration.
1. Bilder in AVIF konvertieren
Produktbilder machen den größten Anteil am Seitengewicht eines Shops aus. AVIF komprimiert gegenüber JPEG und PNG um 50 bis 70 Prozent bei gleicher oder besserer Bildqualität. Für Shopware 6 heißt das: schnellere Ladezeiten, bessere Core Web Vitals und weniger Bandbreite, vor allem auf Mobilgeräten.
Mit unserem Media Booster Plugin lassen sich alle vorhandenen und neu hochgeladenen Bilder automatisch in AVIF konvertieren. Das läuft im Hintergrund, Ihr Team muss am gewohnten Ablauf nichts ändern.
Quick-Win: Allein die Umstellung auf AVIF kann die Gesamtladezeit Ihres Shops um 30 bis 50 Prozent senken, weil Bilder in der Regel den größten Teil des Seitengewichts ausmachen.
2. Unnötige Plugins entfernen
Jedes aktive Plugin in Shopware 6 wird bei jedem Seitenaufruf geladen, auch wenn es auf der aktuellen Seite gar nichts tut. Viele Shops sammeln über die Jahre Plugins an, die einmal getestet und nie wieder deaktiviert wurden. Das kostet bei jedem einzelnen Request Zeit.
So gehen Sie vor:
- Erstellen Sie eine Liste aller aktiven Plugins und prüfen Sie für jedes, ob es tatsächlich im Einsatz ist.
- Deaktivieren und deinstallieren Sie alles, was nicht gebraucht wird, auch wenn es „nur ein kleines Plugin“ ist.
- Achten Sie besonders auf Plugins, die eigene JavaScript- oder CSS-Dateien laden. Sie bremsen das Frontend direkt.
- Nutzen Sie nach der Bereinigung das FroshTools-Plugin (von Friends of Shopware), um weitere offene Punkte zur Performance zu finden.
Achtung: Legen Sie vor dem Entfernen von Plugins immer ein vollständiges Backup an (Datenbank und Dateien). Manche Plugins legen eigene Datenbanktabellen an, die bei der Deinstallation bereinigt werden sollten.
3. Lazy Loading aktivieren
Lazy Loading lädt Bilder und andere Ressourcen erst, wenn sie im sichtbaren Bereich des Browsers erscheinen. Statt beim ersten Aufruf alle 50 Produktbilder einer Kategorieseite gleichzeitig zu laden, kommen nur die sichtbaren sofort, der Rest folgt beim Scrollen.
In Shopware 6 ist natives Lazy Loading über das HTML-Attribut loading="lazy" in den meisten Themes bereits vorgesehen. Prüfen Sie trotzdem, ob es für Produktbilder im Listing, auf Kategorieseiten und in den Erlebniswelten wirklich aktiv ist. Bei Custom-Themes und älteren Theme-Versionen fehlt es häufig.
4. OpenSearch oder Elasticsearch einrichten
Die Standard-Datenbanksuche von Shopware stößt bei größeren Sortimenten schnell an Grenzen, im Frontend (Produktsuche, Filter, Listing) wie im Admin. Abhilfe schafft OpenSearch oder Elasticsearch als eigene Suchengine.
Was das konkret bringt:
- Frontend: Produktlistings, Filter und Shopsuche laden deutlich schneller. Bei Shops mit tausenden Produkten und vielen Eigenschaften merkt man den Unterschied sofort.
- Admin: Die Produkt-, Kunden- und Bestellsuche reagiert ohne lange Wartezeiten. Wer schon einmal in einem Shop mit über 50.000 Produkten im Admin gearbeitet hat, kennt die langsame Standardsuche.
OpenSearch ist der empfohlene Nachfolger von Elasticsearch und wird von Shopware offiziell unterstützt. Die Einrichtung braucht einen eigenen Dienst auf dem Server, lohnt sich aber schon ab etwa 1.000 Produkten spürbar.
5. Redis als Cache- und Session-Backend
Redis ist ein In-Memory-Datenspeicher: Die Daten liegen im Arbeitsspeicher statt auf der Festplatte. Für Shopware 6 bedeutet das, dass Cache-Abfragen und Session-Daten um ein Vielfaches schneller verarbeitet werden als mit dem Standard-Dateisystem.
Wir empfehlen Redis für:
- HTTP-Cache: Gecachte Seiten werden sehr schnell ausgeliefert.
- Application Cache: Interne Shopware-Caches (Konfiguration, Routen, Kategorien) liegen im RAM.
- Sessions: Warenkörbe und Login-Sessions laufen über Redis statt über Dateien.
Hardware-Empfehlung: Planen Sie für Redis mindestens 8 GB RAM ein. Bei größeren Shops mit vielen parallelen Sessions und großem Sortiment darf es mehr sein. Redis ist nur so schnell, wie der verfügbare Arbeitsspeicher es zulässt.
6. PHP-Konfiguration optimieren (php.ini)
Die Standard-PHP-Konfiguration der meisten Hoster ist darauf ausgelegt, dass es irgendwie funktioniert, nicht auf Performance. Für Shopware 6 lohnt es sich, die php.ini gezielt anzupassen. Die folgenden Werte setzen wir in unseren Projekten ein und empfehlen sie für Shops auf dedizierter Hardware mit mindestens 8 CPU-Kernen und 32 GB RAM (bei größeren Projekten entsprechend mehr).
Speicher und Upload
Shopware braucht bei Importen, Plugin-Installationen und in der Medienverwaltung ausreichend Speicher. Diese Werte verhindern Abbrüche bei großen Operationen:
memory_limit = 2048M
post_max_size = 512M
upload_max_filesize = 256M
max_input_vars = 6000
max_file_uploads = 100
file_uploads = On
memory_limit auf 2 GB gibt Shopware genug Spielraum für umfangreiche Produktimporte und Admin-Operationen. max_input_vars auf 6000 ist wichtig, weil Shopware bei komplexen Formularen (z. B. Variantenkonfiguration) viele Felder gleichzeitig übermittelt.
Ausführungszeiten
max_execution_time = 120
max_input_time = 120
120 Sekunden reichen für die meisten Shopware-Operationen. Wer regelmäßig große Datenimporte über den Admin fährt, kann den Wert höher setzen. Im normalen Frontend-Betrieb wird dieses Limit nie erreicht.
Fehlerbehandlung (Produktion)
display_errors = Off
display_startup_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Fehlermeldungen gehören ins Log, nicht auf den Bildschirm. Auf einem Produktivsystem sollten Endkunden nie Fehler sehen: Das ist ein Sicherheitsrisiko und wirkt unprofessionell. Deprecated- und Strict-Warnungen werden unterdrückt, weil sie bei Shopware häufig von Drittanbieter-Plugins kommen und keinen akuten Handlungsbedarf bedeuten.
Sicherheit
expose_php = Off
allow_url_fopen = On
allow_url_include = Off
expose_php = Off verhindert, dass die PHP-Version im HTTP-Header steht. allow_url_fopen muss für Shopware aktiv sein (Composer, Plugin-Store), allow_url_include sollte aus Sicherheitsgründen immer aus bleiben.
Session-Handling über Redis
session.save_handler = redis
session.save_path = "unix://{REDIS_SOCKET}?database=0&auth={REDIS_PASSWORD}"
session.gc_maxlifetime = 14400
session.auto_start = Off
session.use_strict_mode = On
session.cookie_httponly = On
session.cookie_secure = On
session.cookie_samesite = "Lax"
Hier wird Redis als Session-Backend konfiguriert. Ersetzen Sie {REDIS_SOCKET} und {REDIS_PASSWORD} durch Ihre tatsächlichen Werte. Die Cookie-Einstellungen (httponly, secure, samesite) folgen aktuellen Security-Best-Practices. gc_maxlifetime auf 14400 Sekunden (4 Stunden) sorgt dafür, dass Warenkörbe nicht zu schnell verloren gehen.
Realpath Cache
realpath_cache_size = 4096K
realpath_cache_ttl = 3600
Dieser oft übersehene Wert ist für Shopware besonders wichtig. Shopware 6 basiert auf Symfony und lädt bei jedem Request hunderte PHP-Dateien. Der Realpath Cache speichert die aufgelösten Dateipfade im Speicher, sodass das Dateisystem nicht jedes Mal neu abgefragt wird. 4 MB Cache-Größe und 1 Stunde TTL passen für die meisten Shops.
OPcache: der größte Hebel
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 512
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 65000
opcache.max_wasted_percentage = 10
; Timestamps in Produktion deaktivieren
; (nach Deploy: php-fpm reload erforderlich!)
opcache.validate_timestamps = 0
opcache.revalidate_freq = 0
opcache.fast_shutdown = 1
opcache.enable_file_override = 1
opcache.huge_code_pages = 1
; JIT (PHP 8.x, deutlicher Performance-Boost)
opcache.jit = 1255
opcache.jit_buffer_size = 256M
OPcache kompiliert PHP-Dateien einmal und hält das Ergebnis im Speicher. Ohne OPcache muss PHP bei jedem Request alle Dateien neu parsen und kompilieren, bei Shopware sind das tausende Dateien pro Seitenaufruf.
Die wichtigsten Einstellungen:
- memory_consumption = 512: 512 MB für den OPcache. Shopware 6 mit Plugins braucht oft 200 bis 400 MB, also lieber großzügig planen.
- max_accelerated_files = 65000: maximale Anzahl gecachter Dateien. Shopware 6 bringt allein tausende PHP-Dateien mit, dazu kommen Plugins und Vendor-Bibliotheken.
- validate_timestamps = 0: in der Produktion die wichtigste Einstellung. PHP prüft nicht mehr bei jedem Request, ob sich eine Datei geändert hat, und spart damit viel I/O. Wichtig: Nach jedem Deployment muss PHP-FPM neu geladen werden (
systemctl reload php-fpm), damit die neuen Dateien greifen. - JIT (opcache.jit = 1255): Der Just-in-Time-Compiler in PHP 8.x übersetzt häufig ausgeführten Code direkt in Maschinencode. Bei Shopware bringt das spürbar mehr Tempo, vor allem bei rechenintensiven Aufgaben wie Preisberechnungen und Template-Rendering.
7. PHP-FPM-Prozessmanagement
PHP-FPM (FastCGI Process Manager) verwaltet die PHP-Prozesse, die Anfragen an Ihren Shop bearbeiten. Die Standardkonfiguration ist für kleine Websites gedacht, nicht für einen Shopware-Shop unter Last. Mit der richtigen Konfiguration stehen genug Worker bereit, um parallele Anfragen ohne Wartezeit zu verarbeiten.
Unsere Ausgangskonfiguration:
pm = dynamic
pm.max_children = 128
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 40
pm.max_requests = 500
Was die Werte bedeuten:
- pm = dynamic: PHP-FPM startet und beendet Worker je nach Auslastung. Das ist der beste Kompromiss zwischen Performance und Ressourcenverbrauch.
- max_children = 128: maximale Anzahl gleichzeitiger PHP-Prozesse. Bei 32 GB RAM und durchschnittlich etwa 80 bis 120 MB pro Worker reicht das für die meisten Shops.
- start_servers = 20: Anzahl der Worker, die beim Start von PHP-FPM sofort bereitstehen.
- min/max_spare_servers: hält immer 10 bis 40 freie Worker vor, damit Anfragen nicht auf einen neuen Prozess warten.
- max_requests = 500: Nach 500 Requests wird ein Worker neu gestartet. Das verhindert Memory Leaks durch langlebige Prozesse.
Wichtig: Diese Werte sind ein Ausgangspunkt, kein Dogma. Prüfen Sie nach der Umstellung die CPU- und RAM-Auslastung Ihres Servers und passen Sie die Werte bei Bedarf an. Wir nutzen dieses Setup für kleine wie große Shops, die richtige Balance hängt aber immer von Ihrer Hardware und Ihrem Traffic ab.
8. Webserver: Nginx statt Apache
Wir empfehlen für Shopware 6 grundsätzlich Nginx als Webserver. Nginx verarbeitet statische Dateien (Bilder, CSS, JavaScript) effizienter als Apache und kommt mit vielen gleichzeitigen Verbindungen besser zurecht. Zusammen mit PHP-FPM ist Nginx die schnellere Wahl.
Falls Ihr Shop noch auf Apache läuft und Sie einen Wechsel überlegen: Nginx-basiertes Hosting können Sie auch bei uns buchen, vorkonfiguriert für Shopware 6.
9. Datenbank-Tuning
Jede Produktseite, jede Bestellung und jede Suche im Admin löst Datenbankabfragen aus. Antwortet die Datenbank langsam, hilft die beste PHP-Konfiguration nichts.
Unsere Empfehlungen:
- Mindestens 2 GB RAM für die Datenbank einplanen, besser 4 GB oder mehr. Der InnoDB Buffer Pool sollte so groß sein, dass die gesamte Datenbank in den Arbeitsspeicher passt.
- MariaDB bevorzugen: Shopware 6 läuft mit MariaDB und mit MySQL 8. MariaDB ist in den meisten Fällen die unkompliziertere Wahl.
- Bei MySQL 8 die Konfiguration prüfen: Wer MySQL 8 statt MariaDB nutzt, muss auf die korrekte Konfiguration achten. Vor allem der Authentication-Modus und die Collation-Einstellungen machen Probleme, wenn sie nicht ausdrücklich für Shopware angepasst sind.
10. Profiling, wenn es trotzdem noch hakt
Sie haben alle Maßnahmen umgesetzt und Ihr Shop ruckelt immer noch? Dann hilft ein Profiling-Tool. Mit Tideways analysieren Sie auf Codeebene, welche Funktionen, Datenbankabfragen oder Plugin-Aufrufe die meiste Zeit verbrauchen.
Tideways zeigt genau, wo die Millisekunden verloren gehen: ein schlecht geschriebenes Plugin, ein fehlender Datenbankindex oder ein ineffizienter Template-Block. Bei komplexen Shops mit vielen Plugins und Schnittstellen ist Profiling oft der einzige Weg, die tatsächlichen Engpässe zu finden.
Praxisbeispiele: Shops mit diesem Setup, von uns gehostet
Diese Shops betreiben wir mit dem beschriebenen Performance-Setup:
- eurafco.com: internationaler B2B-Shop mit 10 Sprachen, mehreren Subshops und komplexen Variantenstrukturen, mit schnellen Ladezeiten auf allen Verkaufskanälen.
- fahrwerkonline.de: über 250.000 Produkte im Sortiment. Dank OpenSearch und Redis bleibt die Suche auch bei dieser Datenmenge schnell.
- finnia-gartenwelt.de: aufgeräumter Shop mit optimiertem Checkout und schnellen Ladezeiten.
- vinlorenc.de: Weinshop mit eigenem Design und schneller Auslieferung.
- schecker.de: Tierbedarf-Shop mit großem Sortiment und hohem Traffic.
Zusammenfassung: die Performance-Checkliste
Alle Maßnahmen auf einen Blick, sortiert nach Aufwand und Wirkung.
Quick-Wins (sofort umsetzbar)
- Bilder in AVIF konvertieren (Media Booster Plugin)
- Unnötige Plugins deaktivieren und deinstallieren
- Lazy Loading für alle Bilder sicherstellen
- FroshTools installieren und den Performance-Check durchführen
Server-Optimierung (mittlerer Aufwand)
- Redis für Cache und Sessions einrichten (mindestens 8 GB RAM)
- php.ini optimieren (OPcache, JIT, Realpath Cache)
- PHP-FPM-Worker konfigurieren und überwachen
- Auf Nginx umsteigen (falls noch Apache)
Infrastruktur (größerer Aufwand, größter Effekt)
- OpenSearch oder Elasticsearch aufsetzen
- Datenbank-RAM und -Konfiguration optimieren
- Profiling mit Tideways bei verbleibenden Engpässen
Schneller Shop durch abgestimmtes Setup
Ein schneller Shopware-Shop entsteht selten durch eine einzelne Maßnahme. Es braucht passendes Hosting, eine saubere Konfiguration und einen aufgeräumten Shop. Die meisten Optimierungen hier richten Sie einmal ein, danach wirken sie dauerhaft.
Den Unterschied merken Ihre Kunden, Ihr Team im Admin und am Ende auch Ihre Google-Rankings.
Sprechen Sie uns an, wenn wir Ihr aktuelles Setup analysieren und die Optimierungen umsetzen sollen, von der Serverkonfiguration bis zum Shop. Mehr dazu auf unserer Seite zur Shopware-Performance-Optimierung oder direkt über Kontakt.
Sie planen etwas Ähnliches?
Beschreiben Sie uns kurz Ihr System und Ihr Ziel. Wir melden uns mit Rückfragen oder einem Vorschlag für das weitere Vorgehen.
Projekt anfragen