Shopware 6 Cache Warmup HowTo?

Meine Frage nach wie man den Cache von Shopware 6 aufwärmt, mag sich blödsinnig anhören, wo man vermeintlich doch nur 1 Button anklicken muss oder ggf. die Console bemüht. Allerdings kommt mir etwas spanisch vor, wo ich mir nicht sicher bin, ob dieses Warmup so funktioniert, wie gedacht.

Für einen Test in einem anderen Zusammenhang habe ich mir die aktuelle Shopware 6 Version installiert und darin so ca. 50.000 Artikel importiert. Mal ungeachtet von meinem eigentlichen Belang hab ich mir etwas mehr erhofft. Nicht nur, dass dieser Import 3 Tage und 3 Nächte gebraucht hat, sondern der eingebaute Cache auch nicht wirklich der Brüller ist, aber sei’s drum.

Vor dem Warmup habe ich zunächst die Indizes erstelllen lassen und danach den Warmup gestartet, der aber schon nach ein paar Minuten fertig war, zumindest schien der Prozess fertig zu sein. Von den Ladezeiten im Frontend konnte man nicht erkennen, dass hier etwas aufgewärmt wurde, sodass man nicht daraus schließen konnte, dass der Shop aufgewärmt wurde.

Was also muss man besonderes machen, damit dieser Warmup auch funktioniert?

Danke!

Wenn du einen schnellen Server hast, dann merkst du nicht wirklich einen Unterschied. Zumindest ist das meine Erfahrung. Hast du ein Server, der lahm ist, dann liegen da ein bis zwei Sekunden Differenz.

Es spielt beim Austesten grad keine wirkliche Rolle, ob da nun ein Shared Hosting oder ein dedizierter Server im Einsatz ist. Die beschriebene Situation bezogen auf das sonderbar wirkende Verhalten ist die Gleiche. Bedeutet, egal wo diese Test Installation grad läuft, braucht es wenige Minuten bis der Cache aufgewärmt ist und da fehlt mir schlichtweg der Glaube, dass das möglich ist. Zumal wenn man liest, dass es mitunter eine längere max_execution time braucht. Schon alleine das impliziert, dass es hier nicht nur um Minuten gehen kann.

Aber wie gesagt, vielleicht verstehe ich das Aufwärmen auch einfach nur falsch.

Womöglich verstehe aber ich die Methodik nicht, wie der Shopware Cache funktioniert. Ich gehe auch bei diesem von einem HTTP Cache aus, der wie so viele andere URL basiert ist. Das würde zumindest erklären, warum der Speicherverbrauch für den Cache exorbitant hoch ist. Wenn, wie Du meinst der Cache nur dafür zuständig wäre, um Template Dateien zu cachen, bräuchte es diesen nicht. Zumal dann auch sinnloss. Es geht im konkreten Fall beim Cachen mitunter, aber maßgeblich darum die Ladezeiten dadurch zu verkürzen, dass den PHP Interpretor mit samt allen MySQL Queries obsolet zu machen, weil dadurch einerseits die größte Last entsteht und andererseits genau dadurch die Ladezeiten verkürzt werden. Mein gedachtes Wirkungsprinzip würde also genau in dieser Methodik bestehen. Wenn dem nicht so ist, dann ist es kein typischer HTTP Fullpage Cache, sondern wäre dann speicher- und nutzer bezogen. Dafür bräuchte es dann aber Arbeitsspeicher und keinen Festplattenspeicher.

Du hast Recht. Ich habe mich durch das Ladesymbol täuschen lassen. Es lädt nicht ein JSON, sondern komplettes HTML. Dann hast du mit deinen Überlegungen natürlich recht. Bei der Artikelanzahl müsste der Prozess lange durchlaufen.

Eben, also muss hier etwas nicht so laufen, wie gedacht. Es wäre deswegen wünschenswert, wenn jemand anderes noch ein paar Infos dazu hätte. Ich kann deswegen nur vermuten, dass der Warmup womöglich deswegen nicht wie erwartet läuft, weil die Artikel importiert wurden. Andererseits, und das ist das paradoxe daran, wenn ich den Cache dadurch vorwärme in dem ich einen selbstgestrickten Crawler durch alle Seiten des Shops jage, dann funktioniert das mit dem Vorwärmen. Das Gleiche natürlich auch, wenn man die Seiten per Browser aufruft.

Hast du denn den AdminWorker deaktiviert und CronJobs dafür angelegt? Kann mir vorstellen, dass das WarmUp sonst nur vorgenommen wird, solange jemand im Backend eingeloggt ist.

AdminWorker? Sagt mir zunächst mal nichts, was das sein soll?! Cron Job? Wofür, wenn es zunächst mal nur darum geht den Warmup manuell durchzuführen. Der Warmup lässt sich im Backend ja anstoßen, aber der ist nach gefühlten 3 Minuten bereits fertig, was überhaupt nicht sein kann. Über die Konsole gehts noch schneller, also überhaupt kein Warten. Nach Aufruf kommt auch gleich die Bestätigung, dass schon fertig.

Stimmt, er ist ja so schnell durch… dann ist das nicht relevant. Generell: Admin Worker ist für die Scheduled Tasks zuständig, worunter sicherlich auch das WarumUp gehört, da ja nicht alles innerhalb eines PHP-Abrufs erledigt werden kann (Zeitlimit).

Das Problem mit dem Zeitlimit habe ich nicht, aber nicht weil ich das nach Bedarf einstellen kann, sondern ich die Script Laufzeiten über meinen Webserver bei Bedarf ignorieren kann. Ich kann also selbst auf einem Shared Hosting jedes Script bis zum Sankt Nimmerleinstag laufen lassen.