ich habe über die REST API Kategorien und Produkte in den Shopware Shop gelanden. Nun ist der Shop aber extrem langsam (7s bis Frontend geladen ist), die Datenbank selbst braucht nur (7,5ms) um alle Anfragen zu bearbeiten.
Deshalb habe ich nun den http Cache aktiviert und ein “Cache aufwärmen” durchgeführt. Dennoch braucht der erste Zugriff auf eine Kategorieseite immer noch 7s. Erst der zweite Zugriff ist deutlich unter 1 Sekunden erledigt.
Ich habe im Performancemenü alle Caches aktualisierte und Kategoriebäume neu aufgebaut, dennoch ist das Ergebniss immer das Gleiche. Leere ich den Cache, kann ich machen was ich will im Backend, der erste Seitenzugriff dauert 7s und erst der zweite ist extrem schnell.
Gibt es eine Trick denn ich beim “Cache Aufwärmen” im Menü http Cache berücksichtigen müsste?
Und dann schau in der Netzwerk-Analyse, was für Header geliefert werden. Wenn du da beim ersten Aufruf „miss, store“ Einträge hast und die beim zweiten Aufruf „fresh“ aus dem Cache kommen, ist beim Aufwärmen was schiefgegangen.
Was hast du denn für Cache-Zeiten im Backend eingestellt? Einige Controller cachen nur 1 Stunde. Eventuell ist der Cache also schon wieder invalidiert, sobald du die Seite nach dem Aufwärmen wieder aufrufst.
danke für die Antwort. Genau den Cache habe ich debuggt und das Verhalten ist tatsächlich erst ein miss und danach ein fresh. Daher nahm ich an, dass der Aufwärmer nicht richtig funktioniert.
Ich gehe so vor, dass ich den Cache über den Button im Backend aufwärme und direkt im Anschluss die Seiten im Frontend versuche. Kann es sein, dass die URL die der Cache über “Cache aufwärmen” in den Cache lädt nicht die ist die später im Frontend aufgerufen wird? Also ein Problem mit dem Rewrite und SEO URLs ist.
Allerdings wüßte ich nicht wie ich das debuggen könnte.
das dürfte eigentlich kein Problem sein. Shopware ruft intern ja immer die shopware.php?controller=… URLs auf. Die Rewrite-URL wird ja wieder darauf zurückgeführt. Sprich auch wenn du die shopware.php-URL anstatt der SEO-Url aufrufst, müsste sie aus dem Cache kommen.
Hast du mal geschaut, was im Backend unter Einstellungen > Caches / Performance > Einstellungen > Allgemein > HTTP-Cache unter „Definition der Controller (- Aktionen) Cache Zeiten“ für Zeiten eingestellt sind? Wie lange läuft dein Cache aufwärmen denn? Bei unserem Kunden mit ca. 9000 Artikeln läuft das Aufwärmen knapp 2 Stunden. Wenn da 'ne Cache-Zeit von 3600 Sekunden eingestellt wäre, wäre der Cache halt schon wieder invalidiert.
Ansonsten, hast du mal ins Error-Log geschaut (PHP-Log oder auch Core-Log vom Shop)? Manchmal finden sich da auch Hinweise, dass cURL gewisse URLs nicht aufrufen konnte aus welchen Gründen auch immer (die Gründe stehen da dann hoffentlich ).
ich habe mir gerade den CacheWarmer angeschaut und dabei auch gesehen, dass der Fehler wegloggt. Jetzt sehe ich auch, dass es bei jeder URL zu einem Eintrag
Warm up http-cache error with shopId 1 Client error response
kommt. Jetzt habe ich parallel dazu die URL geloggt und tatsächlich der Aufruf der URLs führt immer zu einem Fehler.
Kopiere ich die URL aber raus und füge die in der Adresszeile des Browsers ein. Kann die URL ganz normal aufgerufen werden.
Es kommt also zu einem Fehler wenn der Guzzle Client die URL aufruft.
Ok, jetzt ist es mir auch klar. Meine Sicherheitseinstellungen um den Server zu schützen hat hier zu geschlagen. Da der Guzzle Client ohne individuellen User Agent aufgerufen wird, wird er vom Server als gemeiner Bot abgelehnt.