Sönke BergerWEB DEVELOPMENT
Zurück zur Projekt-Übersicht

Shopware-Shop · B2B-Großhandel

B2B-Katalog: 250.000 Artikel performant ausspielen

Custom-Listing-Architektur für einen B2B-Shopware-Shop mit 250.000 Artikeln, gestaffelten Kundengruppen-Preisen und 14 Filter-Dimensionen. Ladezeit der Kategorie-Seiten von 6,2 s auf 1,3 s.

Kategorie-Ladezeit
−79 %

6,2 s → 1,3 s

Such-Conversion B2B
+113 %

2,4 % → 5,1 %

Server-Last (Spitzenzeit)
−62 %

82 % CPU → 31 % CPU

Bounce-Rate Kategorie
−49 %

57 % → 29 %

Ausgangslage: B2B-Großhandel mit großem Sortiment, 250.000 aktive Artikel im Shopware-6-Katalog, 14 Filter-Dimensionen (Material, Norm, Maß, Hersteller, etc.), gestaffelte Preise pro Kundengruppe (8 Gruppen). Kategorie-Listing-Pages waren mit 6,2 s Ladezeit der erste konkrete Conversion-Killer. Such-Conversion B2B lag bei 2,4 %, weit unter dem Benchmark.

Diagnose: Performance-Profiling ergab drei Hauptursachen — (1) Komplette Produktdaten pro Listing-Item geladen (auch was nicht angezeigt wurde), (2) Filter-Berechnung über MySQL-Queries statt Elasticsearch, (3) Kundengruppen-Preise pro Item einzeln berechnet ohne Batch-Strategie.

Umsetzung: (1) Custom Listing-Endpoint, der nur die für die Card sichtbaren Daten lädt (slug, Titel, Listing-Bild, Preis-Bracket, Verfügbarkeits-Status). (2) Filter-Berechnung auf Elasticsearch ausgelagert mit aggregierten Buckets pro Dimension — Filter-Counts werden gleichzeitig mit dem Listing geliefert, nicht in separaten Queries. (3) Kundengruppen-Preise mit Redis-Cache pro Kundengruppen-Hash, 5-Minuten-TTL.

Ergebnis: Kategorie-Ladezeit von 6,2 s auf 1,3 s (−79 %). Such-Conversion B2B von 2,4 % auf 5,1 % (+113 %). Bounce-Rate auf Kategorie-Pages von 57 % auf 29 % (−49 %). Als Nebeneffekt sank die Server-Last in Spitzenzeiten von 82 % auf 31 % CPU — gleicher Server-Park hält jetzt das doppelte Traffic aus.

Lessons Learned: Bei B2B-Katalogen mit > 100.000 Artikeln ist Elasticsearch keine Option, sondern Pflicht. Plus: Listing-Endpoints sollten nur das laden, was die Card zeigt — das macht den größten Performance-Unterschied. Kundengruppen-Preise eignen sich exzellent für Cache, weil sie sich selten ändern und pro Gruppe deterministisch sind.

Stack

Shopware 6ElasticsearchRedisPHP 8

Datenherkunft

Die Outcome-Zahlen stammen aus dem jeweiligen Analytics-Connector des Klienten und wurden vor Veröffentlichung freigegeben. Wo Kunden Diskretion wünschen, nennen wir nur Sektor und Größenordnung; wo sie freigeben, nennen wir Marke und Maßnahmen beim Namen. Weitere Referenzen und Kontaktbrücken im Kennenlern-Gespräch.

B2B-Katalog: 250.000 Artikel performant ausspielen — Shopware-Shop · B2B-Großhandel | Projekte | Sönke Berger | Sönke Berger