Das Problem: Wie kann man veraltete Einträge aus dem Cache löschen?
Leider gibt es kein "Lösche gesamten Cache". Also kann man nur gezielt Einträge aus dem Cache entfernen. Das klappt solange man den cache_key heraus bekommt. Ich nutzte dazu django.utils.cache._generate_cache_key
Wenn man allerdings z.B. auf einer Seite die Django comments nutzt, wir response Vary auf "Cookie" gesetzt. Alle Vary Angaben werden in den cache key einbezogen. Somit kann man den cache key nicht mehr erhalten.
Wenn also bsp. ein Blog Eintrag geändert wird, sieht ein Client die Änderungen erst, wenn der Cache Eintrag Abgelaufen ist

Was also tun?
1. Zu dem cache Backend eine "lösch alle Einträge" selber implementieren?
2. Eigene Cache middleware implementieren, die niemals cached, wenn ein vary header gesetzt ist?
3. Alle gültigen session cookies durchgehen und cache_key damit bilden
Keine wirklich guten Lösungen.
EDIT: Interessant in dem Zusammenhang: "LocaleMiddleware breaks caching. (Vary: Cookie)": http://code.djangoproject.com/ticket/13217 steht allerdings auf "closed: wontfix"