Caching without Flush

Mein lieblings CMS hat mehrere Caching Mechanismen. Einer davon, speichert die, aus verschiedenen Templates zusammengesetzten Seiten, in einer Datenbanktabelle. Diese Gesamttemplates werden dann bei bedarf aufgerufen und der darin enthaltene Quellcode interpretiert. Es wird also nicht das Ergebniss der Seite, sondern nur der zusammengesetzte Bausatz gepseichert. Soweit so gut.

Die Tabelle in der der Cache gespeichert wird, hat nur drei Felder eine ID, Cachedatum und den Inhalt des Caches natrlich. Das ganze findet in einem MS SQL Server 2000 Statt. Das Feld für den Cacheinhalt ist ein Feld vom Typ “Text” (aka Blob).

Wenn eine Änderung an einem Template der Seite vorgenomme wird, muß also der Cache geleert werden, sofern man denn seine Änderung in absehbarer Zeit auch in der Seite wiederfinden möchte. Auch ok. Leider räumt mein lieblings CMS diesen Cache nicht auf. Somit enthält der Cache fast 10.000 Datensätze, von fast einem Jahr. Toll.

Leider Bekommt man bei der SQL-Anweisung delete from cache einen Timeout und es wird nichts gelöscht. Jetzt darf man also den Cache Schrittweise in Monatsschritten löschen. Manachmal hat man Pech und darf sich sogar in kleineren Schritten durch die Tabelle wühlen, weil zu viele Datensätze für den angegeben Zeitraum vorhanden sind.

Das CMS verfügt zwar über verschiedene funktionen zum leeren des Caches, soweit sich mir das erschlossen hat, sollte auch die eine oder andere automatisch arbeiten, aber offenbar ist das nicth der Fall.

Das SQL Server bei der Datenmenge nicht mitspielen will, ist außerdem noch recht unangenehm.

2 Responses to “Caching without Flush”

  1. Sven Says:

    Und wie nennt sich das CMS?

  2. Hagen Says:

    Ich denke das behalte ich lieber für mich, will ja niemandem auf die Füße treten, aber es mußte mal raus.
    Bitte um Verständnis.