Вообще странно хранить кеш в БД и при этом оптимизировать COUNT
Про количество записей я для примера написал, вообще в проекте собираются данные из не нескольких таблиц, и на все подсчеты уходит больше минуты.
В принципе проблему решил отказом от cache_page. Теперь код выглядит примерно так.
def user_donation(request, user_id):
user_cache = cache.get('user_{0}_info'.format(user_id))
if user_cache:
return HttpResponse(user_cache)
else:
user = User.objects.get(id=user_id)
content = *Нужные данные*
cache.set('user_{0}_info'.format(user_id), content)
return HttpResponse(content)
В принципе от удаления кэша тоже отказался, теперь он обновляется при помощи celery task.