Redis und Memcached mit PrestaShop: wann sie sich lohnen und was schiefgehen kann
Ein Abfrage-Cache kann einen großen Shop beschleunigen oder dafür sorgen, dass Sie Daten von vor einer halben Stunde sehen. Wir zeigen, wie Sie entscheiden und Überraschungen vermeiden.
Redis und Memcached sind In-Memory-Speicher, die PrestaShop (oder ein Modul) nutzen kann, um Ergebnisse von Datenbankabfragen zu speichern und sie nicht zu wiederholen. In Shops mit viel Traffic und großen Katalogen ist die Ersparnis real. In kleinen Shops bringt es oft nur zusätzliche Komplexität.
Wann es sich lohnt
- Viele gleichzeitige Besuche, und die Datenbank ist der gemessene Engpass.
- Großer Katalog mit vielen wiederholten Abfragen (Kategorien, Eigenschaften, Filter).
- Sie haben Kontrolle über den Server, um Redis zu installieren und zu überwachen.
Das ewige Problem: Invalidierung
Ein Abfrage-Cache muss wissen, wann sich ein Wert geändert hat, um die alte Version nicht mehr auszuliefern. Speichert er das Ergebnis von „wie viele Produkte sind in dieser Tabelle“ für 30 Minuten, und jemand fügt Zeilen ein, ohne dass der Cache es merkt, sieht in diesen 30 Minuten jeder die alte Zahl.
Bewährte Praktiken
- Schließen Sie volatile Tabellen aus: Warenkörbe, Bestellungen, Bestand, Kunden und Sitzungen sollten nie gecacht werden.
- Vernünftige TTLs und eine einfache Möglichkeit, den Cache im Backoffice zu leeren.
- Wartungsskripte, Importe und Crons müssen gegen die echte Datenbank arbeiten, nicht gegen den Cache.
- Vorsicht beim Deinstallieren: Manche Caches installieren Overrides der Datenbankklassen. Wird der Modulordner gelöscht, ohne das Modul zu deinstallieren, können diese Overrides jeden Schreibvorgang im Shop zerstören. Deinstallieren Sie immer über das Backoffice und prüfen Sie danach den Ordner
override/classes/db/.
Alternativen vor Redis
- Indizes für die langsamen Abfragen.
- Gut konfigurierter Smarty-Cache.
- Seitencache für anonyme Besucher, sauber von Warenkorb und Konto ausgenommen.
Wenn das nicht reicht, dann ja: ein Datencache, gut konfiguriert und überwacht.