Datenbank Cache Problem -> Shopware()->Db()

Hallo! Ich hab für meinen Shop ein Plugin entwickelt, welches im Frontend die Anzahl der Produkte im Merkzettel anzeigt. Das geht eigentliche ganz gut. Doch ich hab bemerkt, dass die Ergebnisse eines SQL-Statements gecached werden. Dies ist zwar schön und gut, jedoch ungünstig, wenn der Kunde einen neuen Artikel in den Merkzettel tut. Damit erhöht sich die Anzahl, doch dank des Caches, wird immer noch die alte Anzahl dargestellt. Ich folgendes eingebaut: private function subscribeEvents() { ... $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend', 'onFrontendPostDispatch'); ... } public function onFrontendPostDispatch(Enlight\_Event\_EventArgs $args) { ... $countNotes = (int) Shopware()-\>Db()-\>fetchOne('SELECT COUNT(\*) FROM s\_order\_notes'); ... } Die Variable $countNotes gibt in diesem Fall immer ein falsches Ergebnis aus, sobald ein Besucher einen neuen Artikel in den Merkzettel tut. Wenn man den Cache im Backend leert, wird das Statement natürlich neu geladen und das Resultat ist mit der Datenbank identisch. Ich kenne die Cache-Mechanik nicht komplett. Somit hab ich versucht zu experimentieren, z.B. mit einer variierenden Abfrage: ... $time = time(); $countNotes = (int) Shopware()-\>Db()-\>fetchOne('SELECT COUNT(\*) FROM s\_order\_notes WHERE "'.$time.'" = "'.$time.'"'); ... Doch das hat auch nicht geholfen :frowning: Hatte bereits jemand ein solches Problem? Was kann man in diesem Fall tun? Würde mich über eine Hilfestellung freuen! :slight_smile:

Es wird immer die komplette Seite in den cache gelegt - daher sollten benutzerspezifische Daten per esi tag (action widget) geladen werden. Als Beispiel: https://github.com/shopware/shopware/bl … on.tpl#L35 Viele Grüße

1 „Gefällt mir“

Hi, du hast doch sicher den HTTP-Cache aktiviert, oder? Wir cachen keine DB-Ergebnisse. Wenn du sowas mit HTTP-Cache machen möchtest, brauchst du entweder ein Smarty {action} Tag oder musst die Infos eben via Ajax am Cache vorbei laden. Besten Gruß, Daniel // Eike war schneller :wtf:

1 „Gefällt mir“

Das klingt gut! Werde ich gleich mal ausprobieren und eine Rückmeldung geben. Erstmal vielen herzlichen Dank für den Tipp!

Hat wunderbar funktioniert. Vielen herzliche Dank!!! :thumbup: