当且仅当用户注销时才使用Django的缓存?

时间:2015-10-23 08:21:21

标签: python django caching memcached

我需要在我的Django 1.8站点上实现缓存(显然是为了加速渲染)。计划是使用Memcache,虽然这个问题与它没有直接联系。

现在,大量流量会转到一组保持不变的特定博客帖子。但是,整个站点都有一个通用的动态顶部栏,可以从登录用户到登录用户不等,所以我需要一个缓存功能,当且仅当用户是匿名的时才启动 - 例如如果用户已登录,则完全绕过该文件。

看起来Django的内置缓存并没有真正区分登录和注销用户,所以如果我使用它,会对登录用户产生不利影响。

我可能必须使用较低级别的缓存API编写自己的缓存装饰器/缓存功能,并将其附加到网站上所有已注销的URL /视图中。虽然它看起来并不难,但这似乎是一个非常常见的功能。 Django真的没有什么能够正确地做到这一点吗?我担心自己可能会错过一些东西并重新实现轮子。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,模板缓存超额评级。首先使用django调试工具栏来确定django安装上的模板渲染是否确实很慢。我打赌它不是瓶颈。如果你发现它很慢。你可以按每个用户进行缓存,如下所示:

{% cache 300 FULL_PAGE request.build_absolute_uri request.user %}

cache template tag的第一个参数是超时,第二个参数是其他人唯一标识片段的名称。