2015-08-03 2 views
0

Я кэширование вида, как показано ниже:Очистить кэш Django взгляда на выходе из системы

@cache_page(60 * 15) 
def my_view(request): 
    # Get results for request.user 
    return HttpResponse(json.dumps(results), content_type="application/json", status=200) 

Как я могу очистить этот кэш, когда пользователь выходит из системы?

+0

Это не имеет смысла. 'cache_page' не относится к текущему пользователю; такая же кэшированная версия будет доступна всем пользователям. –

+0

@ DanielRoseman Спасибо, но другой браузер (сеанс) с другим пользователем возвращает совершенно разные результаты. Так что, кешированный вид не обслуживается для всех пользователей, верно? Есть ли лучший способ сделать это? – greenafrican

+0

Используете ли вы кластер locmem в многопроцессорной среде? –

ответ

0

Вам необходимо определить лучший ключ кеша, который изменяется на пользователя или только на user.is_authenticated. Вы также можете использовать префикс ключа, если вы используете redis, поскольку redis позволяет удалить все ключи, содержащие определенный префикс.

key = "result_{}".format(request.user.pk) 
results = cache.get(key) 
if not results: 
    results = ... 
    cache.set(key, results) 
... 
Смежные вопросы