Тайм-аут сеанса в веб-приложениях - PullRequest
1 голос
/ 10 марта 2009

Время ожидания сеанса в веб-приложениях обычно обозначает время простоя, т. Е. Период времени, когда пользователь не работает с приложением.

Теперь, что если бы был написан автоматический скрипт, который отправляет запрос каждые 5 минут - разве сеанс этого пользователя не будет продолжаться бесконечно? В таком случае, не будет ли такой подход сильно загружать приложение, влияющее на его производительность в долгосрочной перспективе?

Ответы [ 7 ]

4 голосов
/ 10 марта 2009

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

1 голос
/ 10 марта 2009

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

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

1 голос
/ 10 марта 2009

Я сделал нечто подобное для приложения, которое в значительной степени зависит от данных сеанса.

Что я сделал, так это установил относительно малое время ожидания IIS, скажем, 10 минут, а затем получил синхронизированный вызов AJAX, который пингует пустую страницу каждые 5 минут.

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

1 голос
/ 10 марта 2009

Да и Да.

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

0 голосов
/ 10 марта 2009

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

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

0 голосов
/ 10 марта 2009

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

0 голосов
/ 10 марта 2009

Ну ... я думаю, "Это зависит". Первый вопрос, который вы должны задать себе, - нужна ли вам сессия.

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

В этом случае, либо выключите его, либо не беспокойтесь об этом.

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