Как сохранять сессии в Джанго при выходе пользователя с аккаунта?
Сейчас сохраняю корзину пользователей в сессиях, а сами сессии в кэше. Но при выходе пользователя с аккаунта сессии удаляются. Можно ли их сохранить и снова показать пользователю при входе?
maksam07, Я сохраняю корзину пользователей в сессии, чтобы не нагружать базу данных. В куки все корзины не поместятся. Поэтому после входа мне бы хотелось вернуть все товары в корзину
Saipy, я просто в одной книге читал за джанго и работу с корзиной, там использовали редис, но если честно, то я уже забыл как именно, и решает ли оно текущую проблему - не знаю)
Сайпи Курбанов,
1. БД, если корзины нужно анализировать
2. Куки, если корзины не нужно анализировать (signed cookie, если нужна гарантия, что юзер не изменит куки по своему желанию)
Сайпи Курбанов, а что такого в "целой" корзине? айдишник размером 4 или 8 байт и количество размером 4 байта? На каждую позицию в корзине 8 байт. А ещё, по секрету, куки можно сжать
Сайпи Курбанов, можешь — да. нужно ли — я не знаю. нужно ли переделывать — я тоже не знаю, что у тебя там в проекте. И, как уже здесь говорили, корзину необязательно хранить в сессии
Roman K, Если это все занимает так мало места, как вы говорите, 4-8байт, то в чем проблема это все хранить в оперативной памяти? Даже если на системе будет 1гб, этого хватит за глаза
Сайпи Курбанов, во-первых, в оперативной памяти это не будет храниться в виде 4-8 байт, во-вторых, зачем? делать больше нечего, кроме как чужими корзинами занимать оперативу? для свободной оперативной памяти есть гораздо более полезное применение. корзины же — это далеко не горячие данные, которые требуют очень быстрого доступа и которые часто меняются, а к большинству корзин пользователи вообще никогда не вернутся. или вернутся через неделю/две/месяц. при этом, цена оперативной памяти во много раз превышает цену дисковой памяти. ну и следующий вопрос: а вдруг в датацентре выключат свет — дальше что? корзины все ваши (не ваши, а юзерские) очистятся. и, знаете, как очень придирчивый клиент, я был бы очень недоволен ситуацией, когда я накидал в корзину товары, на следующий день решил купить, а они пропали. то есть, оперативную память придётся-таки сохранять на диск, чтобы при перезагрузке восстановить данные. тогда зачем их хранить в озу, если всё равно дампить на диск?
не знаю, это настолько очевидные и элементарные вопросы, что мне стыдно на них отвечать. оперативная память — для оперативного доступа. думать о пользователе надо в первую очередь.
Roman K, Если они очевидны для вас, это не значит что они очевидны для всех. Специалистами не рождаются. Всё приходит с опытом. Для этого и создаются такие форумы, вас никто не заставляет отвечать, найдется всегда человек умнее и опытнее. Когда то вас учили держать ложку и ходить, а это уже действительно очевидные вещи...