#asp.net #session
Вопрос:
Это относится к ситуации, когда сеанс используется для хранения некоторых временных данных — одним из примеров является информация, введенная в ходе многоэтапного процесса регистрации.
Если на веб — сайте есть несколько таких разделов, которые хотят использовать сеанс в качестве временного хранилища данных для страниц в разделе, каков хороший способ очистки сеанса, когда данные больше не требуются, учитывая, что пользователь может просто уйти из раздела, чтобы сами страницы нельзя было использовать для очистки.
[Править] В моем случае основной целью для этого является сокращение сетевого трафика, поскольку сеанс хранится вне процесса, но та же проблема может касаться приложений, связанных с памятью, и производительности в целом. Кроме того, неожиданные данные в сеансе могут легко привести к трудным для отслеживания ошибкам.
Ответ №1:
Время должно поддерживать сеанс в чистоте. Сеансы должны истечь и при этом сбросить все свои данные. Это поведение по умолчанию.
Я соглашусь с тем, что хранение слишком большого количества данных в сеансе-не очень хорошая вещь для серверных ресурсов, но, как вы знаете, иногда это необходимое зло. Если вы действительно так обеспокоены, подумайте о переносе сеансов на SQL Server. Это добавит небольшую задержку, но вы сможете обрабатывать гораздо больше пользователей.
Ответ №2:
Если вы хотите хранить массовые данные, у вас есть следующие альтернативы:
- Кэш
- База данных
Не рекомендуется хранить большой объем данных в сеансе.
Ответ №3:
Почему бы не сохранить все в базе данных? Это просто чище.
Почему? Ну, большинство современных веб-приложений попадают в базу данных более дюжины раз для каждого просмотра страницы, поэтому несколько дополнительных простых запросов не должны существенно влиять на производительность.
Сказав это, нет ничего плохого в хранении большого количества пользовательских данных в сеансе, особенно если вы используете сеансы на основе файлов.
Почему? На самом деле, сколько текста может ввести один человек в регистрационную форму? Все, что меньше 4000 байт, займет столько же места: одна страница ОС!
Ответ №4:
Вы можете разработать многоступенчатый процесс регистрации без использования хранилища сеансов или базы данных для хранения временных данных. Вы можете создать одну страницу .aspx с несколькими панелями, которые вы делаете видимыми по одной панели за раз. Когда пользователь завершит последнюю панель, у вас все равно будет доступ ко всем ранее заполненным элементам управления.