Джанго Сессия

голоса
37

Я смотрю на сессии в Django, и по умолчанию они хранятся в базе данных. Каковы преимущества файловой системы и кэш-сессий и когда я должен использовать их?

Задан 08/09/2008 в 19:16
источник пользователем
На других языках...                            


5 ответов

голоса
25

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

Memcache Бэкэнд гораздо быстрее, чем сервер базы данных, но вы рискуете сеанс очищаются и некоторые данные сеанса теряются.

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

Ответил 08/09/2008 в 19:58
источник пользователем

голоса
19

Я не эксперт Django, поэтому этот ответ о сеансовых магазинах обычно. Downvote, если я ошибаюсь.

Производительность и масштабируемость

Выбор сеанса магазина влияет на производительность и масштабируемость. Это должно быть только большая проблема, если у вас есть очень популярное приложение.

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

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

Простота

Выбор сеанса магазина также повлияет, как легко развернуть ваш сайт. Изменение от значения по умолчанию будет стоить некоторую сложность. Memcached и РСУБД оба имеют свои сложности, но приложение, вероятно, будет использовать РСУБД в любом случае.

Если у вас есть очень популярное приложение, простота должна быть больше беспокойства.

бонус

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

Ответил 09/09/2008 в 09:11
источник пользователем

голоса
3

Одна вещь, которую необходимо учитывать при выборе сеанса бэкенд «как часто данные сеанса модифицируется»? Даже сайты с умеренным трафиком будут страдать, если данные сеанса изменяются при каждом запросе, что делает много поездок базы данных для хранения и извлечения данных.

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

Ответил 19/09/2008 в 07:20
источник пользователем

голоса
1

Если база данных есть DBA, что это не вы, вы не можете быть разрешены использовать сеанс базы данных спинок (причем передний конец дела только). До Джанго не поддерживает легко объединение данных из нескольких баз данных, так что вы можете иметь внешний интерфейс конкретных вещей, как сессии и пользовательские сообщения (сообщения в django.contrib.auth также хранится в БД) в отдельной БД, вы должны держать это в виду.

Ответил 28/11/2008 в 14:34
источник пользователем

голоса
9

На Django 1.1 вы можете использовать cached_db сеанса задний конец.

Это сохраняет сессию в кэше (использовать только с Memcached), и записывает его обратно в БД. Если он выпал из кэша, он будет прочитан из БД.

Хотя это медленнее, чем просто использование Memcached для хранения сессии, он добавляет упорства к сессии.

Для получения дополнительной информации см: Джанго Docs: Использование Cached Sessions

Ответил 21/12/2009 в 10:21
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more