Python 具有授权用户的基于Django视图的缓存

Python 具有授权用户的基于Django视图的缓存,python,django,caching,Python,Django,Caching,因此,我在django中使用基于视图的缓存,因为我有一些视图并不真正适合缓存,而其他视图确实适合缓存。但是,在我缓存的某些视图中,不同用户的输出将不同。有没有一种方法可以将基于视图的缓存分别用于不同的用户?@vary\u on\u cookie decorator看起来正是我所需要的,但它似乎不适用于基于视图的缓存 目前在我看来,我有: @vary_on_cookie @cache_page(60 * 5) def view(request): 如果您以Anonymous身份登录,您可以看到登

因此,我在django中使用基于视图的缓存,因为我有一些视图并不真正适合缓存,而其他视图确实适合缓存。但是,在我缓存的某些视图中,不同用户的输出将不同。有没有一种方法可以将基于视图的缓存分别用于不同的用户?@vary\u on\u cookie decorator看起来正是我所需要的,但它似乎不适用于基于视图的缓存

目前在我看来,我有:

@vary_on_cookie
@cache_page(60 * 5)
def view(request):
如果您以Anonymous身份登录,您可以看到登录用户的缓存是什么

有什么想法吗?我知道我可能会使用低级缓存来解决这类问题,但如果没有更简单的django方法来解决这类问题,我会感到惊讶,这似乎是一个常见的问题

谢谢


Tom

您只需将基于客户端的缓存与
缓存控制一起使用即可。比如:

@cache_control(max_age=60 * 5)
def view(request):
有一个使用Django缓存框架的。我想你可以自己修改一下。第38行:

key = make_cache_key(request.get_full_path(), getattr(request, 'supports_html5', None))
你可以把它改成

key = make_cache_key(request.user[.id], request.get_full_path(), getattr(request, 'supports_html5', None))

因此,用户具有不同的页面键。

因此,如果用户以前在页面上,它只缓存页面?那么,如果两个未经授权的用户都尝试访问该视图,该视图将不会通过缓存?如中所示,它们都将分别处理视图?是否公开缓存所有匿名用户,并私下缓存授权用户?看起来补丁缓存控件(response,public=True)可能是我需要的,我要试试。