Cache Tweaks: Reduziert Redis-Layout-Cache durch generische Handles¶
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 | 6 |
| 8 Für Entwickler / For Developers | 7 |
1 Was es macht¶
Magento erzeugt für jede Produktseite eigene Layout-Handles wie CATALOG_PRODUCT_VIEW_SKU_24-MB01 und CATALOG_PRODUCT_VIEW_ID_42. Das bedeutet: für jede einzelne SKU wird ein eigener Eintrag im Redis-Layout-Cache angelegt. Bei einem Katalog mit 50.000 Produkten ist der Layout-Cache riesig — Redis-Lookups werden träge, und der Speicherbedarf wächst unnötig.
Dieses Modul setzt direkt am Erzeugungspunkt dieser Handles an: es entfernt die id- und sku-Parameter aus den Layout-Handle-Parametern und ersetzt entity-spezifische Handles durch generische. Das Ergebnis: ein kleiner, stabiler Layout-Cache, der auch bei großen Katalogen performant bleibt.
2 Wann sinnvoll¶
- Großer Produktkatalog (ab ca. 10.000 Produkten)
- Redis-Layout-Cache wächst auffällig oder belegt zu viel Speicher
- Layout-Cache-Lookups träge laut Redis-Monitoring
- Redis-Evictions häufen sich trotz ausreichend konfigurierten Speicher
3 Voraussetzungen¶
- Magento 2.4.x
- PHP 8.1 oder höher (kompatibel mit 8.2, 8.3, 8.4, 8.5)
copex/module-core>1.1.0
4 Installation¶
composer require copex/module-performance-tweaks
bin/magento module:enable CopeX_Performance
bin/magento setup:upgrade
bin/magento cache:flush
Alternativ die komplette Suite installieren:
composer require copex/performance-suite-bundle
5 Aktivierung¶
Stores → Configuration → Advanced → Performance → Cache
| Option | Funktion |
|---|---|
| Disable Entity Specific Layout Handles | Entfernt entity-spezifische Handles (z. B. CATALOG_PRODUCT_VIEW_TYPE_SIMPLE) |
| Disable Entity ID Layout Handles | Entfernt ID- und SKU-spezifische Handles (z. B. CATALOG_PRODUCT_VIEW_SKU_MH01) |
Beide Optionen sind per Default auf Ja gestellt.
6 Verwendung¶
Cache Tweaks arbeitet vollständig im Hintergrund — keine CLI-Befehle notwendig. Das Modul ist nach Aktivierung und Cache-Flush sofort aktiv.
Zur Überprüfung: Redis-Layout-Cache nach einem Cache-Flush neu befüllen lassen und Schlüsselanzahl beobachten. Mit aktivierten Optionen steigt die Anzahl der Layout-Cache-Einträge nur noch mit den Seitentypen (Kategorie, Produkt, Warenkorb), nicht mehr mit der Anzahl der Produkte.
7 Was tun bei Problemen¶
Optionen deaktivieren:
Stores → Configuration → Advanced → Performance → Cache → beide Optionen auf "Nein" stellen, dann Cache leeren. Das Modul wird zur No-Op — alle Handles werden wie im Magento-Standard erzeugt.
Einzelne Option deaktivieren:
- Nur "Disable Entity ID Layout Handles" deaktivieren: SKU- und ID-Handles werden wieder erzeugt; entity-spezifische Handles bleiben weiterhin deaktiviert.
- Nur "Disable Entity Specific Layout Handles" deaktivieren: SKU/ID-Keys werden weiterhin entfernt; der
$entitySpecific-Flag wird nicht mehr überschrieben.
Layout-Probleme nach Aktivierung:
Falls ein Theme oder ein Modul zwingend auf SKU- oder ID-spezifische Layout-Handles angewiesen ist, beide Optionen auf "Nein" setzen und das Theme bzw. Modul anpassen, um generische Handles zu verwenden.
8 Für Entwickler¶
Das Modul registriert ein before-Plugin auf Magento\Framework\View\Result\Page::addPageLayoutHandles. Das Plugin liest die Konfiguration einmalig im Konstruktor (Store-Scope) und ist danach zustandslos.
Sortierung im DI-XML anpassen:
<type name="Magento\Framework\View\Result\Page">
<plugin name="copex_performance_remove_entity_cache"
type="CopeX\Performance\Plugin\RemoveEntityCache"
sortOrder="10"/>
</type>
Eigene Plugins mit niedrigerem sortOrder laufen vor Cache Tweaks und sehen noch die originalen Parameter. Eigene Plugins mit höherem sortOrder sehen bereits die bereinigten Parameter.
CopeX GmbH — Web: https://copex.io — Email: office@copex.io