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):
答
有一个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))
使用户有不同的翻页键。
因此,如果用户之前已经使用过它,那么它只缓存一个页面?因此,如果两个用户都不是authed都会尝试访问该视图,则不会通过缓存?如同他们将分别处理视图一样? – oracal 2012-04-28 08:41:26
@oracal是的,对。 – 2012-04-28 08:54:13
无论如何做到这一点,公开缓存所有匿名和私人缓存authed用户?看起来像patch_cache_control(response,public = True)可能是我需要的,我会尝试一下。 – oracal 2012-04-28 09:15:37