Schnittstellen cachen
Andi
- programmiertechnik
Hallo,
wir benutzen Schnittstellen um bestimmte Daten aus einem CMS auszulesen.
Diese Daten kommen als XML zurückgeliefert und dann visualisiert.
Ich möchte Aufgrund der Performance die Schnittstellen cachen. Ich möchte den Cache so programmieren, dass er erst wenn z.B. ein Event welches gesucht wird, verändert worden ist, den Cache leert.
Nur habe ich leider keinen Ahnung, wie ich herausfinde, ob das alte geändert worden ist ohne andere Datensätze mitzulesen oder die Zeitraubende Query nocheinmal abzuschicken.
Habt ihre irgendwelche Vorschläge, wie ich das Problem umgehen kann?
MfG
Andi
Hallo Forum,
Ich möchte Aufgrund der Performance die Schnittstellen cachen. Ich möchte den Cache so programmieren, dass er erst wenn z.B. ein Event welches gesucht wird, verändert worden ist, den Cache leert.
Ich habe das so gelöst, dass alle Methoden, die den Datenbestand ändern, eine Methode aufrufen, die den Cache neu erzeugt (bei mir ging es um Statistiken aber das sollte keine Rolle spielen).
Gruß
Alexander Brock
Moin!
Ich habe das so gelöst, dass alle Methoden, die den Datenbestand ändern, eine Methode aufrufen, die den Cache neu erzeugt (bei mir ging es um Statistiken aber das sollte keine Rolle spielen).
Das funktioniert ja nur dann, wenn Änderungen ausschließlich durch die abfragende Seite, die auch den Cache verwaltet, vorgenommen werden. Wenn durch andere Wege Änderungen am Datenbestand vorgenommen werden (und das Stichwort CMS legt sowas irgendwie nahe), dann funktioniert diese Methode nicht.
Letztendlich muß man sagen: Caching funktioniert üblicherweise nach einer von zwei Methoden.
1. Man definiert, dass die einmal abgefragten Daten unabhängig von einer Veränderung des Originals einfach eine gewisse Zeit lang gültig sind, und erst nach Ablauf einer Zeitdauer neu nachgefragt werden. Je nach Abfrageszenario kann ja schon eine Minute Gültigkeit ausreichend sein, um statt tausend Requests in dieser Minute an die Datenbank nur jeweils einen einsetzen zu müssen. Die Daten wären dann maximal 59 Sekunden lang veraltet.
2. Alternativ muß der Datenlieferant in der Lage sein, die Gültigkeit der bisherigen Daten zu bestätigen. Man fragt "Ich hab hier Daten von $DATUM, sind die noch gültig, oder gibts was neueres", und die Datenbank antwortet dann entsprechend. Das wird sich, weil sich dieser Mechanismus jenseits der Schnittstelle befindet, nicht einsetzen lassen.
- Sven Rautenberg
Hallo Forum,
Das funktioniert ja nur dann, wenn Änderungen ausschließlich durch die abfragende Seite, die auch den Cache verwaltet, vorgenommen werden. Wenn durch andere Wege Änderungen am Datenbestand vorgenommen werden (und das Stichwort CMS legt sowas irgendwie nahe), dann funktioniert diese Methode nicht.
Ich meinte, dass man halt den Aufruf der Update-Methode in jede Methode des CMS schreiben muss, der den Datenbestand ändert.
Alternativ könnte man auch versuchen, mit Triggern eine Update-Methode aufzurufen (hab ich aber noch nie gemacht).
Gruß
Alexander Brock