Cache-Warming
Nach einem Deployment, einem vollständigen Cache leeren oder einer großflächigen Invalidierung ist Ihr Cache leer. Der erste Besucher jeder Seite zahlt den vollen Render-Aufwand (MISS). Cache-Warming generiert jede cachefähige URL vorab, sodass Besucher nur noch gecachte Antworten sehen.
Das Warming wird über die Symfony Messenger Queue gesteuert — die Dispatch-Anfrage kehrt sofort zurück, der Worker arbeitet die URLs dann im Hintergrund ab. Der Fortschritt wird in der Datenbank verfolgt und im Admin live gezeigt.
Wie ein Warmup starten
Abschnitt betitelt „Wie ein Warmup starten“- Öffnen Sie Einstellungen → Speed Boost → Dashboard.
- Klicken Sie Warmup starten.
- (Optional) Überschreiben Sie die Batch-Größe (Standard
50). - Bestätigen. Der Warmup wird an die Queue gesendet.
Das Dashboard zeigt:
- Gesamt-URLs — beim Start erkannte cachefähige URLs
- Geprüft — wie viele bisher verarbeitet wurden (Erfolg oder Fehler)
- Verbleibend — URLs noch in Bearbeitung
- Prozent abgeschlossen
- Ein Echtzeit-Panel mit Cache-Statistiken pro Typ, das sich mit dem Schreiben der Einträge aktualisiert
Sie können den Warmup jederzeit aus dem Dashboard Pausieren, Fortsetzen oder Abbrechen.
Was aufgewärmt wird
Abschnitt betitelt „Was aufgewärmt wird“Die Discovery-Query des Warmups sammelt jede URL, die der Cache verarbeiten kann:
- Aktive Produkte, die für jeden Sales Channel sichtbar sind (gegen
seo_urldedupliziert) - Aktive Kategorien, die Teil eines Navigationsbaums sind (gegen
seo_urldedupliziert) - CMS-Seiten, die einem Sales Channel zugewiesen sind
- Startseite jedes Sales Channels
Die Query respektiert Sichtbarkeits-Flags, Sales-Channel-Geltungsbereich und SEO-URL-Eindeutigkeit — deaktivierte oder unsichtbare URLs werden übersprungen.
Warmups pro Sales Channel
Abschnitt betitelt „Warmups pro Sales Channel“Der Warmup respektiert den Sales-Channel-Switcher in der Seitenkopfzeile. Wenn Sie vor dem Start einen einzelnen Sales Channel auswählen, werden nur dessen URLs aufgewärmt. Mit „Alle Sales Channels” gewählt deckt der Warmup jeden aktiven Channel ab.
Anforderung: Async-Queue
Abschnitt betitelt „Anforderung: Async-Queue“Warming läuft auf Symfony Messenger. Der Async-Worker muss laufen:
bin/console messenger:consume async --time-limit=300In Produktion betreiben Sie den Worker als langlebigen Prozess (systemd, supervisor oder was immer Sie schon für die anderen Async-Jobs Shopwares verwenden). Ohne laufenden Worker bleibt der Warmup ewig in der Queue — die Warmup starten-Anfrage gelingt zwar und der Fortschrittseintrag wird erzeugt, aber Geprüft bleibt bei 0.
Fehlgeschlagene URLs
Abschnitt betitelt „Fehlgeschlagene URLs“Wenn eine URL einen HTTP-Status außerhalb von 2xx zurückgibt, wird sie als Fehler gezählt, stoppt den Warmup aber nicht. Fehlgeschlagene URLs werden in Warmup-Historie → Detail für den Lauf gelistet, mit Statuscode und einem Ausschnitt der Antwort.
Häufige Gründe:
- Eine Redirect-Kette (z. B. alte SEO-URL → 301 → neue SEO-URL) — meist okay
- Eine Kategorie ohne sichtbare Produkte (gibt in manchen Themes 404 zurück)
- Eine CMS-Seite, die per Berechtigungen vor dem Storefront versteckt ist
- Ein Infrastrukturfehler (502 / 504) — erneut starten, wenn das zugrundeliegende Problem behoben ist
Warmup-Historie
Abschnitt betitelt „Warmup-Historie“Jeder Warmup-Lauf erzeugt eine Zeile in der Warmup-Historie:
- Start- / Ende-Zeitstempel
- Zähler total / geprüft / fehlgeschlagen
- Durchschnittliche HTTP-Antwortzeit
- Status (laufend / pausiert / abgebrochen / abgeschlossen)
Die Detailansicht zeigt einzelne URLs und ihre Ergebnisse. Historie wird unbegrenzt aufbewahrt — manuell löschen, falls nicht benötigt.
HTTPS, Schema und Hostname
Abschnitt betitelt „HTTPS, Schema und Hostname“Der Warmup ruft URLs standardmäßig über HTTP ab. Wenn Sie HTTPS-URLs (typisch für Produktion) aufwärmen wollen, stellen Sie sicher, dass die Storefront-Domain in Sales Channels → Domains https:// verwendet — der Warmup folgt diesem Schema.
Warmups aus einem Deploy-Skript auslösen
Abschnitt betitelt „Warmups aus einem Deploy-Skript auslösen“Um den Cache als Teil einer Deploy-Pipeline aufzuwärmen, rufen Sie den REST-Endpoint:
curl -X POST https://your-shop.example.com/api/_action/p2lab-cache/warmup/start \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"salesChannelId":null,"batchSize":100}'Die Antwort enthält eine progressId, die Sie per /api/_action/p2lab-cache/warmup/progress?progressId=… pollen können, um auf den Abschluss zu warten.
Siehe REST-API für die volle Endpoint-Liste.
Durchsatz-Tipps
Abschnitt betitelt „Durchsatz-Tipps“- Batch-Größe erhöhen, wenn Ihr Message-Worker schnell ist und Sie schneller fertig werden wollen. Standard
50ist konservativ. - Mehrere Worker laufen lassen —
messenger:consume async --limit=…läuft in parallelen Prozessen; der Warmup verteilt sich. - Invalidierungs-Logging während Warmup deaktivieren, wenn Ihre Invalidierungslog-DB auf langsamer Platte liegt — das Dashboard liefert dieselben Zahlen im Speicher.