Django的观点基于缓存与authed用户

问题描述:

所以我使用的视图基于缓存在Django因为我有一些看法是不是真的适合缓存和其他人真的是。但是,在这些缓存输出的视图中,对于不同的用户会有所不同。有没有办法为不同的用户分开查看缓存? @vary_on_cookie装饰器看起来像我所需要的,但它似乎不适用于基于视图的缓存?Django的观点基于缓存与authed用户

在身边我看来,那一刻,我有:

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

如果你登录为anonmymous你可以看到什么是高速缓存的通过登录的用户。

任何想法?我知道我可以使用低级缓存来解决这类问题,但如果没有更简单的django方法,我感到很惊讶,看起来这将是一个常见问题。

感谢

汤姆

你可能只是使用基于客户端的缓存与cache_control。像:

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

因此,如果用户之前已经使用过它,那么它只缓存一个页面?因此,如果两个用户都不是authed都会尝试访问该视图,则不会通过缓存?如同他们将分别处理视图一样? – oracal 2012-04-28 08:41:26

+0

@oracal是的,对。 – 2012-04-28 08:54:13

+0

无论如何做到这一点,公开缓存所有匿名和私人缓存authed用户?看起来像patch_cache_control(response,public = True)可能是我需要的,我会尝试一下。 – oracal 2012-04-28 09:15:37

有一个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)) 

使用户有不同的翻页键。