部分缓存视图方法

时间:2013-02-06 06:08:39

标签: django caching memcached

我正在使用Memcachedpython-memcached绑定)与我的一个django项目。场景是在主页上我有:

  • 顶栏:(包含登录/用户名的链接以及指向个人资料的链接)
  • 搜索表单
  • 几个结果块

目前,我正在使用cache_page()装饰器来缓存整个页面,如下所示:

@cache_page(3600)
def home(request):
    # View Code Goes Here

以上是按预期工作的。但由于主页是一个可公开访问的页面,我遇到一个问题,其中有一个场景:

  1. 匿名用户请求主页(如果是,则页面获取缓存 还没有)。
  2. 现在用户登录并重定向到主页。
  3. 加载缓存的主页(Topbar仍会显示登录链接,而不是登录用户的名称和个人资料链接,因为在用户登录之前页面已缓存。)
  4. 问题:

    有没有办法在模板级别或视图级别上,这可以让我们指定一个我们不要想要在使用cache_page()装饰器时缓存的块?

    请注意:我知道我们可以在上述方案中为每个块使用{% cache %}模板标记或cache.set。但我正在寻找一个解决方案,我们可以使用cache_page()装饰器,但仍然可以指定我不希望在特定视图或模板中缓存的block

1 个答案:

答案 0 :(得分:0)

使用CACHE_MIDDLEWARE_ANONYMOUS_ONLY

但它听起来像是一个中间件选项,它也会影响@cache_page