Джанго кэшированная сессия - PullRequest
3 голосов
/ 16 марта 2011

У меня два вопроса:

1) Мне интересно, можно ли использовать

django.contrib.sessions.backends.cache

для хранения сессий действительно повышает производительность сайта? Предполагая, что есть приблизительно 25k одновременных пользователей. Каждый пользователь вносит множество изменений в базу данных (например, браузерная игра). Разница даже заметна?

2) Опять при использовании кэшированного сеанса (без БД): как проверить, вошел ли данный пользователь в систему (не разрешать несколько входов в систему с одной учетной записью)?

1 Ответ

5 голосов
/ 16 марта 2011

re 1.

из моего опыта разница огромна.в вашем сценарии каждый раз, когда сеанс создается или изменяется - это сгенерирует запись в БД.каждый раз, когда пользователь заходит на сайт - будет сгенерировано чтение базы данных.удаление этого из БД - сохраняет по крайней мере один запрос на запрос.

этот дополнительный трафик, плюс ваш обычный трафик приложения может легко убить вашу производительность БД.

re.2.

даже для сеанса, поддерживаемого БД, нет четкого способа убедиться, что пользователь вошел в систему один раз (чтение всех данных сеанса, удаление их из памяти и последующая фильтрация не совсем понятны))

, чтобы сделать это, я, вероятно, буду использовать кеш: каждый раз, когда пользователь входит в систему, проверьте, есть ли здесь ключ (например, user:) в кеше сохраненное значение будет идентификатором сеанса, а если текущий сеанс отличается от сохраненного, то истекает старый сеанс, сохраняются новый идентификатор сеанса.

, но даже этот будет не всегда работают, иногда вкладки / окна браузера используют одни и те же файлы cookie (особенно, когда SESSION_EXPIRE_AT_BROWSER_CLOSE имеет значение False - по умолчанию), а сеансы основаны исключительно на файлах cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...