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

Я не вижу возможности, чтобы получить информацию из самого закрытия. Закрытие не обеспечивает состояние.

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

37
задан Tom 17 July 2012 в 17:49
поделиться

5 ответов

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

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

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

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

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

Простота

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

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

Премия

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

19
ответ дан Tanguy Serrat 17 July 2012 в 17:49
поделиться
  • 1
    +1, Возможно, то, что они имеют в виду, является тем NULL " используется конечным пользователем , чтобы указать или определить, что объект является abset" в то время как R использует другие вещи внутренне в некоторых случаях. – joran 26 August 2011 в 06:10

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

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

3
ответ дан zgoda 17 July 2012 в 17:49
поделиться
  • 1
    На самом деле, " object" аргумент передал addEntity, и removeEntity ключевое слово значения по умолчанию JavaScript, которое выбирает " name" из объекта, чей соответствующий " View" кнопка нажала (addEntity, и removeEntity являются onclick функциями вызываемого), таким образом object.name содержит на самом деле название объекта. scene.add (объект) хорошо работает, поскольку я вижу объекты, продвинутые экран. Проблема только с scene.remove (object.name), поскольку ни это не показывает ошибки, ни любых результатов. – harman052 22 August 2013 в 02:51

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

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

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

25
ответ дан Andrew Wilkinson 17 July 2012 в 17:49
поделиться
  • 1
    @Owen You' корректное ре. Я забыл, что pairlists не являются векторами вообще, даже когда у них есть ненулевая длина. I' ve удалил мой комментарий для предотвращения любого дополнительного беспорядка. – goodside 26 August 2011 в 05:59

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

1
ответ дан kaleissin 17 July 2012 в 17:49
поделиться
  • 1
    Я вижу, I' m не уверенный точная проблема, но функция scene.remove в Three.js ищет Object3D.name, который может или не может быть эквивалентным. Увы, я думаю для ясности, немного больше кода может быть необходимо, чтобы видеть, что объектная конструкция и использование Вашего добавлять удаляют объектный код. Иначе, I' d console.log Mesh.name в Вашем добавлять функцию и удаляют функцию и видят, какие выводы Вы получаете. – Darryl_Lehmann 22 August 2013 в 03:20

Начиная с Django 1.1, вы можете использовать серверную часть сеанса cached_db.

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

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

Для получения дополнительной информации см .: Django Docs: Использование кэшированных сеансов

10
ответ дан 27 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: