Smart Loaders: Weniger Datenbankzugriffe für schnellere Seiten¶
User Guide¶
CopeX GmbH
Web: https://copex.io
Email: office@copex.io
Inhaltsverzeichnis / Table of Contents¶
| Abschnitt / Section | Seite |
|---|---|
| 1 Was es macht / What it does | 3 |
| 2 Wann sinnvoll / When to use | 3 |
| 3 Voraussetzungen / Requirements | 4 |
| 4 Installation | 4 |
| 5 Aktivierung / Activation | 5 |
| 6 Verwendung / Usage | 5 |
| 7 Was tun bei Problemen / Troubleshooting | 7 |
| 8 Für Entwickler / For Developers | 8 |
1 Was es macht¶
Reduziert die Anzahl der Datenbankzugriffe bei Kategorie-, Produkt- und Warenkorbseiten. Ein typischer Magento-Shop fragt für eine Kategorieseite mit 24 Produkten mehrere hundert Datensätze einzeln aus der Datenbank ab — Bilder, Preise, Lagerstand, URL-Pfade, Verlinkungen. Smart Loaders bündelt das zu wenigen großen Abfragen.
Das Prinzip: Sobald Magento eine Produktliste lädt, erkennt Smart Loaders die enthaltenen Produkt-IDs und lädt alle zugehörigen Daten (Bilder, Preise, Lagerstand, URLs, Kategorieverknüpfungen, Bundle-Optionen usw.) in einem einzigen Durchgang vorab. Wenn Magento anschließend für jedes Produkt einzeln nach diesen Daten fragt, liefert der bereits gefüllte Speicher die Antwort — keine weitere Datenbankabfrage.
Dasselbe Prinzip gilt für den Warenkorb: MSI-Lagerabfragen, die Magento für jeden Warenkorbposten einzeln ausführt, werden durch eine vorbereitete Batch-Abfrage ersetzt.
2 Wann sinnvoll¶
- Kategorieseiten laden langsam, auch bei warmen Caches
- Datenbank-CPU hoch während normaler Shopnutzung
- Warenkorb-Seite fühlt sich träge an
- Query-Log zeigt viele gleichartige Abfragen pro Seite
3 Voraussetzungen¶
- Magento 2.4.6 oder höher
- PHP 8.1 oder höher (kompatibel mit 8.2, 8.3, 8.4, 8.5)
copex/module-performance-suite— benötigtes Hauptmodulcopex/module-core>1.1.0- Optional:
magento/module-inventory-sales-apifür MSI-Lagerabfragen im Warenkorb
4 Installation¶
composer require copex/module-preloaders
bin/magento module:enable CopeX_Preloaders
bin/magento setup:upgrade
Alternativ die komplette Suite installieren:
composer require copex/performance-suite-bundle
5 Aktivierung¶
'copex' => [
'performance' => [
'enabled' => true,
'preloaders_enabled' => true,
],
],
Optionale Feinabstimmung:
'copex' => [
'performance' => [
'min_batch_size' => 3, // Mindestanzahl Produkt-IDs bevor Preloading ausgelöst wird
'chunk_size' => 500, // Max. Produkt-IDs pro Abfrage
],
],
6 Verwendung¶
Smart Loaders arbeitet vollständig im Hintergrund — keine manuellen Schritte notwendig. Das Modul ist nach Aktivierung und Cache-Flush sofort aktiv.
Messung der Verbesserung:
bin/magento copex:performance:benchmark --url=/kategorie/sale.html
Gibt eine Vergleichstabelle aus: Abfrageanzahl und Ladezeit mit und ohne Preloader.
Vorgeladen werden: Lagerstand, Bilder, Preise, Rabattregeln, URLs, Related/Upsell/Crosssell-Links, Kategorie- und Website-Zuordnungen, Custom Options, Bundle-Optionen und MSI-Lagerabfragen im Warenkorb.
7 Was tun bei Problemen¶
Kill Switch:
'copex' => ['performance' => ['preloaders_enabled' => false]]
Deaktiviert alle Preloader sofort. Cache leeren. Shop läuft wie vorher.
Für den kompletten Kill Switch:
'copex' => ['performance' => ['enabled' => false]]
Automatische Selbstschutzfunktion: Wenn ein Preloader eine Exception wirft, wird er für den Rest der Anfrage deaktiviert und der Fehler in var/log/copex-performance.log protokolliert. Bei der nächsten Anfrage wird er erneut versucht.
Preloader läuft, aber keine Verbesserung sichtbar:
bin/magento copex:performance:benchmarkzur Bestätigung ausführenmin_batch_sizeprüfen — wenn zu hoch, werden kleine Kollektionen übersprungen- Sicherstellen, dass OPcache aktiv ist
8 Für Entwickler¶
Eigene Preloader via PreloaderInterface oder TypeAwarePreloaderInterface implementieren und im PreloaderPool in di.xml registrieren. TypeAwarePreloaderInterface deklariert per getSupportedTypes(), für welche Kontexte (list, cart, wishlist, pdp) der Preloader gilt. Details im Quellcode von copex/module-performance-suite.
CopeX GmbH — Web: https://copex.io — Email: office@copex.io