Как я могу сохранить сеанс в чистоте?

#asp.net #session

Вопрос:

Это относится к ситуации, когда сеанс используется для хранения некоторых временных данных — одним из примеров является информация, введенная в ходе многоэтапного процесса регистрации.

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

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

Ответ №1:

Время должно поддерживать сеанс в чистоте. Сеансы должны истечь и при этом сбросить все свои данные. Это поведение по умолчанию.

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

Ответ №2:

Если вы хотите хранить массовые данные, у вас есть следующие альтернативы:

  1. Кэш
  2. База данных

Не рекомендуется хранить большой объем данных в сеансе.

Ответ №3:

Почему бы не сохранить все в базе данных? Это просто чище.

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

Сказав это, нет ничего плохого в хранении большого количества пользовательских данных в сеансе, особенно если вы используете сеансы на основе файлов.

Почему? На самом деле, сколько текста может ввести один человек в регистрационную форму? Все, что меньше 4000 байт, займет столько же места: одна страница ОС!

Ответ №4:

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