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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Code: Alles auswählen

from django.core.cache import cache
cache.delete(your_cache_key)
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten