Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django';s缓存当且仅当用户注销时?_Python_Django_Caching_Memcached - Fatal编程技术网

Python 使用Django';s缓存当且仅当用户注销时?

Python 使用Django';s缓存当且仅当用户注销时?,python,django,caching,memcached,Python,Django,Caching,Memcached,我需要在Django 1.8站点上实现缓存(显然是为了加快渲染速度)。计划是使用Memcache,尽管这个问题与它没有直接联系 现在,大量流量流向一组特定的博客帖子,这些帖子保持不变。但是,整个站点都有一个通用的动态顶栏,每个登录用户的顶栏都会有所不同,因此我需要一个缓存功能,当且仅当用户是匿名用户时才会启动,例如,如果用户登录,则会完全绕过该功能 看起来Django的内置缓存并不能真正区分登录用户和注销用户,所以如果我使用它,将会对登录用户产生不利影响 我可能必须使用低级缓存API编写自己的缓

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

现在,大量流量流向一组特定的博客帖子,这些帖子保持不变。但是,整个站点都有一个通用的动态顶栏,每个登录用户的顶栏都会有所不同,因此我需要一个缓存功能,当且仅当用户是匿名用户时才会启动,例如,如果用户登录,则会完全绕过该功能

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

我可能必须使用低级缓存API编写自己的缓存装饰器/缓存函数,并将其附加到站点上所有注销的可访问URL/视图。虽然这看起来并不困难,但这确实是一个非常常见的特性。Django中真的没有任何东西可以正确地实现这一点吗?我担心我可能错过了什么,正在重新安装车轮


谢谢大家!

首先,模板缓存被高估。首先使用django调试工具栏确定在django安装中模板呈现是否确实很慢。我打赌这不是瓶颈。如果你发现它很慢。您可以按每个用户进行缓存,如下所示:

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

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

感谢您的回答-我知道如何在每个用户的基础上使用它。在这种情况下,模板呈现不是瓶颈。瓶颈是模板由多个数据库调用填充(因为实际内容存储在elephantblog/feincms中)。因此,我需要在URL/控制器层进行缓存,甚至在它进行这些调用之前。这也可以用于非身份验证用户,因为这样用户对所有用户都是匿名的。是的,在memcache中缓存所有或部分查询可能会给您带来更好的速度提升