Я использую сессии в Django для хранения информации о пользователе для входа в систему, а также некоторой другой информации. Я читал на сайте сессии Django и у меня все еще есть несколько вопросов.
С сайта Django:
По умолчанию Django сохраняет сессии в
ваша база данных (используя модель
django.contrib.sessions.models.Session
).
Хотя это удобно, в некоторых
настройки быстрее хранить сессию
данные в другом месте, так что Django может быть
настроен для хранения данных сеанса на
ваша файловая система или в вашем кэше.
Также:
Для постоянных кэшированных данных установите
SESSION_ENGINE
до
django.contrib.sessions.backends.cached_db
.
Это использует сквозной кэш -
каждая запись в кеш тоже будет
записано в базу данных. Сессия читает
используйте базу данных только если данные
еще не в кеше.
Есть ли хорошее эмпирическое правило, какое из них использовать? cached_db
кажется, что это всегда был бы лучший выбор, потому что в лучшем случае данные находятся в кеше, а в худшем - в базе данных, где бы они ни были. Единственным недостатком является необходимость установки memcached.
По умолчанию установлено SESSION_EXPIRE_AT_BROWSER_CLOSE
False
, что означает сеансовые куки
будет храниться в браузерах пользователей для
пока SESSION_COOKIE_AGE
. использование
это если ты не хочешь чтобы люди имели
войти в систему каждый раз, когда они открывают
браузер.
Возможно ли иметь оба, сеанс истекает при закрытии браузера и указывать возраст?
Если значение является целым числом, сеанс
истекает через столько секунд
пассивность. Например, позвонив
request.session.set_expiry(300)
будет
заставить сеанс истечь через 5 минут.
Что считается "бездействием"?
Если вы используете базу данных базы данных, обратите внимание, что данные сеанса могут
накапливать в django_session
таблица базы данных и Django не
обеспечить автоматическую продувку. Следовательно,
ваша работа, чтобы очистить истек
сеансы на регулярной основе.
Так что это означает, что даже если сеанс истек, в моей базе данных все еще есть записи. Куда именно можно поместить код для «очистки базы данных»? Я чувствую, что вам нужен отдельный поток, чтобы просто проходить через базу данных каждый раз (каждый час?) И удалять сеансы с истекшим сроком действия.