Nur bestimmten Cache leeren / Empty explicit cache files

Hallo zusammen,

ich nutze oxid insofern, dass ich direkt in die DB schreibe. Ich weiß natürlicih, dass es Webservices gibt, aber für meinen Zweck muss ich direkt in die DB meine Anpassungen schreiben.
Nun habe ich das Problem, dass ich nicht jedes Mal den gesamten Cache leeren kann, wenn ich irgendetwas in der DB angepasst habe, da dies bei ca. 50.000 Modifikationen / Tag dazu führt, dass eigentlich nur noch der Cache geleert wird und dementsprechend die Performance des Shops gen Null geht.

Mein Anliegen wäre nun auf eine Funktion zurückzugreifen, die nach der Modifikation bspw. der Stückzahl des Artikels mit der ID “12345”, nur den Cache für diesen Artikel löscht.

Grundsätzlich muss das ja möglich sein, da ja das gleiche passiert, wenn ich im Backend von Oxid eine Stückzahl bei einem Artikel aktualisiere.

Kann mir hier jemand helfen?


Hello everyone,

i´m using Oxid without webservices, instead i´m writing into the database (DB) directly. Since i don´t want to delete the whole tmp folder to make my modifications work, i´m looking for a way to renew only those cache files which are connected to my modifications in the database.

Example:
I´m updating the stock of article No. “12345” from 7 to 50 items directly in the DB. Now i want to call some function that renews / deletes the cache files for the article “12345”.
Since this is possible via the backend or the webservices there has to be a way to do that.

Anyone help please?

Hi hacki,
Ja das ist sogar recht einfach möglich. In der Tabelle oxcache wirst du im Feld OXRESETON die OXID deines Artikels finden. Hier ein Beispiel wie der Inhalt einer Detailseite aussehen könnte:
“ox|cid=[B]Dies_ist_die_kategorie_OXID[/B]|cl=details|anid=[B]OXID_des_Artikels[/B]”.
Also musst du nur alle Zeilen aus oxcache löschen die die OXID deines Artikels enthalten.
OXID wird dann beim nächsten Aufruf der Seite eine neue cache Datei(mit dem gleichen Namen) und neuem Inhalt erzeugen.

mfg
b.hasis

Wow, super vielen Dank für die schnelle Hilfe. Ich werde das gleich ausprobieren.

Okay jetzt stehe ich vor einem sehr seltsamen Problem… bei mir gibt es keine oxcache Tabelle.
WIrd diese automatisch von Oxid angelegt wenn irgendetwas aktiviert wird?

Hi,
also benutzt du eine CE/PE ? Dann weiß ich grad auch nicht genau wie das funktioniert, denke aber das es dennoch gehen möglich ist. Irgendwie berechnet OXID ja immer den gleichen cachefilename, zumindest in meiner EE. Also wirds auch möglich sein es selber zu berechnen. Leider kann ich dir nicht sagen wie das genau gemacht wird.

mfg

Ihr sprecht da von Äpfeln und Birnen - das EE Caching hat reichlich wenig mit dem grundsätzlichen Caching der Felder das in allen Versionen vorhanden ist zu tun. Es gibt in CE/PE generell keinen full site cache der so etwas abspeichern würde, hast du überhaupt mal probiert den cache einfach nicht zu löschen? Was passiert dann? Was genau wird den gecached was du erneuern möchtest?

salut,

>>Nun habe ich das Problem, dass ich nicht jedes Mal den gesamten Cache leeren kann, >>wenn ich irgendetwas in der DB angepasst

Daten aus dem Cache (TMP-Ordner) müssen nur gelöscht/geleert werden wenn an der Datenbankstruktur etwas geändert wird oder Module installiert werden … .

Habe den TMP-Ordner soeben nochmal kurz angesehen. Einige Daten werden zwischen gespeichert, aber in wieweit der Shop diese automatisch erneuert bzw. wirklich benötigt lässt sich auf die Schnelle nicht sagen.
Die Dateien “oxpec_aLocalCatCache.txt”, “oxpec_aLocalManufacturerCache.txt” beherbergen scheinbar die Kategorien und Hersteller. Darin könnte eventuell auch die Anzahl der enthaltenen Artikel abgelegt sein.
Vielleicht abgesehen von diesen beiden Dateien müsstest du nichts aus dem Cache löschen.

ceau