4

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

目前,在我看来,我有:

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

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

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

谢谢

汤姆

4

2 回答 2

0

这里有一个使用 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))

使用户拥有不同的页面键。

于 2012-04-28T08:19:42.523 回答
0

您可以简单地将基于客户端的缓存与cache_control. 喜欢:

@cache_control(max_age=60 * 5)
def view(request):
于 2012-04-28T07:32:17.860 回答