ich benutze Memcached (mit python-memcached bindend) mit einem meiner Django-Projekte. Das Szenario ist, dass ich auf der Homepage:
- Eine Top Bar: (Dies enthält die Links zu Login / Benutzername mit einem Link zum Profil.)
- Ein Suchformular
- Einige Ergebnisblöcke
Derzeit verwende ich die cache_page()
Dekorator, um die gesamte Seite wie folgt zu cachen:
@cache_page(3600)
def home(request):
# View Code Goes Here
und das obige funktioniert wie erwartet. Da die Homepage jedoch eine öffentlich zugängliche Seite ist, habe ich ein Problem mit einem Szenario:
- Ein anonymer Benutzer fordert die Homepage an (die Seite wird zwischengespeichert, wenn sie vorhanden ist ist noch nicht
- Nun meldet sich der Benutzer an und wird zur Homepage weitergeleitet.
- Die zwischengespeicherte Startseite wird geladen (Topbar zeigt immer noch einen Anmelde-Link anstelle des Namens und des Profils des angemeldeten Benutzers, da die Seite vor dem Anmelden des Benutzers zwischengespeichert wurde.)
Frage:
Gibt es eine Möglichkeit, entweder auf Vorlagenebene oder auf Ansichtsebene, mit der wir einen Block angeben können UNTERLASSEN SIE möchte während der Verwendung zwischenspeichern cache_page()
Dekorateur
Bitte beachten Sie: Ich weiß, dass wir verwenden können {% cache %}
Vorlagen-Tag oder cache.set
für jeden Block im obigen Szenario. Aber ich suche speziell nach einer Lösung, mit der wir das nutzen können cache_page()
Dekorateur und können noch eine angeben block
dass ich möchte nicht in einer bestimmten Ansicht oder einer Vorlage zwischengespeichert werden
Antworten:
0 für die Antwort № 1benutzen CACHE_MIDDLEWARE_ANONYMOUS_ONLY
Es klingt jedoch als Middleware-Option und wirkt sich auch auf @cache_page aus