【发布时间】:2018-05-16 01:01:07
【问题描述】:
所以我有这个网站(Django 1.8),它有一个主模板,其中显示登录用户的姓名,所以模板包含
{% if user.is_active %}
{% trans 'Welcome,' %}{% filter force_escape %}{% firstof user.first_name user.username %}{% endfilter %}
{% endif %}
因此请注意,它仅在用户处于活动状态时显示。我现在在使用 redis 作为缓存存储的地方设置缓存:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://redis:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
},
"KEY_PREFIX": "mycache",
}
}
缓存工作正常,但我注意到该用户名也缓存在前端。这意味着当用户注销时,他的名字仍然可见,就像他已经登录一样,更糟糕的是,有时它会显示另一个刚刚登录并触发缓存的用户的名字。这当然是合乎逻辑的,因为我认为缓存框架会缓存整个页面。
我的问题是:你如何处理这个问题?我是否需要某种基于用户的缓存,还是有更好的方法来避免这种情况?我的意思是,一定有其他人遇到过同样的问题?
【问题讨论】: