基于Django视图的缓存与authed用户

时间:2012-04-28 06:46:46

标签: python django caching

所以我在django中使用基于视图的缓存,因为我有一些不适合缓存的视图和其他真正适合的视图。但是,在某些视图中,我缓存输出对于不同的用户将是不同的。有没有办法让不同的用户分开基于视图的缓存? @vary_on_cookie装饰器看起来就像我需要的但它似乎不适用于基于视图的缓存?

在我的观点周围,我有:

@vary_on_cookie
@cache_page(60 * 5)
def view(request):

如果您以anonmymous身份登录,则可以查看登录用户的缓存内容。

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

谢谢

汤姆

2 个答案:

答案 0 :(得分:0)

您可以使用cache_control简单地使用基于客户端的缓存。像:

@cache_control(max_age=60 * 5)
def view(request):

答案 1 :(得分:0)

snippet here使用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))

以便用户拥有不同的网页密钥。