/ / teilweise caching einer Ansichtsmethode - Django, Caching, Memcached

Teilweise Caching einer View-Methode - Django, Caching, Memcached

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:

  1. Ein anonymer Benutzer fordert die Homepage an (die Seite wird zwischengespeichert, wenn sie vorhanden ist ist noch nicht
  2. Nun meldet sich der Benutzer an und wird zur Homepage weitergeleitet.
  3. 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 № 1

benutzen CACHE_MIDDLEWARE_ANONYMOUS_ONLY

Es klingt jedoch als Middleware-Option und wirkt sich auch auf @cache_page aus