Seite 1 von 1

django: Cache aufräumen nicht möglich???

Verfasst: Mittwoch 19. September 2007, 17:28
von jens
Sagt mal. Ist es möglich den Cache, egal welches Backend genutzt wurde, komplett zu löschen? Ich finde da spontan nix.

Ich hab nämlich das Problem von http://pylucid.net:8080/pylucid/ticket/94 :
Nachdem eine Seite editiert wurde, sollte der Cache auch aktualisiert werden. Eigentlich wäre es das beste den ganzen Cache zu löschen und neu aufbauen zu lassen...

Kann es sein, das man das nicht kann?

Verfasst: Mittwoch 19. September 2007, 20:47
von mitsuhiko

Code: Alles auswählen

from django.core.cache import cache
cache.delete(your_cache_key)

Verfasst: Donnerstag 20. September 2007, 08:16
von jens
Damit lösche ich einen Eintrag im cache. Ich möchte aber alle löschen. Dazu brauche ich also alle verwendeten Cache-Keys.
Ich glaube eine seperate Tabelle mit den Cache-Keys zu pflegen, ist keine gut Idee.

Verfasst: Donnerstag 20. September 2007, 11:45
von mitsuhiko
Das geht natürlich nicht, weil Backends das nicht alle bereitstellen können. Aber das ist auch eine sehr unelegante Lösung, invalidiere die Daten einfach.

Verfasst: Donnerstag 20. September 2007, 12:39
von jens
Die Daten invalidieren?!?! Was meinst du damit?

Nochmal das Problem: Ich cache die gesamte Seite, z.B. auch mit dem Hauptmenü. Allerdings nur für unangemeldete User.
Wenn nun jemand sich einloggt und eine Seite umbenennt, löscht verschiebt ect. ist in allen Seiten aus dem Cache das Hauptmenü veraltet.

OK, der Cache hat mit CACHE_MIDDLEWARE_SECONDS eine begrenzte Lebensdauer, aber die Zeit kann ja sehr hoch gewählt werden...

Meine Idee war es nun, nach einer Änderung alle Cache Daten zu löschen.
z.Z. nutzte ich nur das einfache "Filesystem caching". Ich könnte also selber die Dateinamen einlesen oder gleich löschen. Aber das wäre eine dumme Idee.