Любой, кто написал немного больший ASP, знает, что сеанс действительно полезен. Но вы действительно знаете, как работает сеанс? Возможно, после того, как вы поймете, вы никогда не осмелитесь снова использовать этот объект любви-ненависти. Хотя метод перехода на альтернативы немного неприятен, после долгосрочных соображений я должен это сделать.
Во -первых, давайте поговорим о преимуществах сеанса, которые можно использовать для записи переменных данных, принадлежащих клиенту, и не исчезнут в диапазоне времени. Это действительно важная функция, особенно те, которые должны использоваться системами с членами. Например, учетная запись входа участника, время, статус и многие записанные данные в реальном времени (например, система покупок записывает продукты в корзине для покупок пользователя), эта информация является частным потребностями каждого пользователя, и обычно разработчик использует ИТ -обработка сеанса.
Тем не менее, сеанс в ASP состоит из файлов cookie, а сервер передает всю информацию, записанную в сеансе в браузер пользователя в форме файлов cookie. Обычно браузеры сохраняют эти файлы cookie. Это принцип работы сеанса. Пересмотреть память и т. Д. Начальное действие. Теперь вы можете подумать: «Я должен использовать эту функцию, поэтому я должен пожертвовать немного». Конечно, есть альтернативы.
Приложение также является хорошим в записи и обработке временных данных. Приложение не похоже на сеанс, который не передает данные пользователю и не ждет в следующий раз, чтобы прочитать их обратно в Интернете.
Поскольку объекты приложения являются общедоступными, первое, что должно быть сделано, это планировать общую область для каждого пользователя, чтобы у каждого пользователя была своя область для записи данных для достижения цели моделирования. Сейчас есть два способа сделать это:
1. Заранее инициализируйте пространство памяти пользователей, когда он активирован. Полем Однако есть ограничение. Небольшие программы, такие как чаты.
2. Этот метод должен считаться более подходящим для больших приложений. Целью этих двух моделируемых сеансов является сокращение потребления ресурсов сеанса, но в конце концов, это все еще является незаменимым.
■ Первый план
Сначала мы начинаем реализацию первого решения.
Инициализация была завершена, но как ее использовать? Нам просто нужно изменить информацию, хранящуюся в сеансе, такую как учетная запись и время входа в систему, в созданный нами объект приложения, где пользователь входит в систему:
| 'Ищу неиспользуемое пространство Для i = 1 к приложению (ClientMax) Если приложение (user_status_ & i) = 0 тогда 'Пользовательский временный номер Session (index) = i 'блокировка Приложение приложение.lock 'Установлено в подержанное состояние Приложение (user_status_ & i) = 1 'Поместите в данные переменной Приложение (user_account_ & i) = учетная запись Application (user_logtime_ & i) = теперь () 'Разблокировано Application.unlock Выход для Конец, если Следующий |
Чтобы получить соответствующие данные переменной пользователя, это похоже на следующее:
| Response.write (Application (user_account_ & session (index)) |
Вы можете обнаружить, что не имеете в виду не использовать сеанс? Тогда почему сеанс существует в исходном коде выше? Как упоминалось ранее, эта альтернатива не может полностью заменить сеанс. В настоящее время мы должны полагаться на сеанс. IS у вас есть ключ, и ключ в том, что на нем есть номера, а число на ключе позволяет тренеру привести вас к вашему сейфу. Этот метод имеет некоторые улучшения, но этого достаточно для небольших приложений.
■ Второй план
Что касается предыдущего решения, вы также можете подумать, что наш индивидуальный номер использует сеанс для записи. Правильно, независимо от того, хотим ли мы его использовать или нет, сервер автоматически поможет каждому пользователю назначить число, и этот номер не будет повторяться. Эта нумерация - это действие, которое сеанс определенно будет выполнять, поэтому мы можем использовать ее для замены программы нумерации, которую мы пишем сами, что сохраняет еще одно усилие и даже имеет большее расширение. Но в основном первое решение, выше, все еще полезно, например, чаты, которые ограничивают количество людей и других небольших приложений.
Если веб -сайт с сотнями, тысячами или даже десятками тысяч людей на веб -сайте каждую секунду, он определенно не будет работать, если использует предыдущее решение. Предположим, вы установите верхний предел 10 000 человек, как только сервер активируется, он поможет вам вырезать 10 000 областей для подготовки к 10 000 пользователей. Он учитывает только 320 000 К (320 МБ). Немногие, я думаю, что 512 МБ будет достаточно. Следовательно, решение состоит в том, чтобы динамически настроить пространство пользовательской переменной и вырезать часть области, когда пользователь онлайн с сервером, поэтому нет необходимости заранее настроить огромную память.
Второе решение относительно просто.
| 'Lock ApplicationApplication.lock' Поместите данные переменных Application (user_account_ & session.sessionid) = учетная запись Application (user_logtime_ & session.sessionid) = now () 'разблокировать приложение. Unlock |
Чтобы получить соответствующие данные переменной пользователя, это похоже на следующее:
| Response.write (Application (user_account_ & session.sessionid))) |
В прошлом я читал много книг, в которых говорилось, что сессия было очень трудно съесть ресурсы, поэтому старайтесь не использовать их, но мне все еще нужно использовать их, когда они должны, и книги не учили более подходящему решению. Теперь, когда вы понимаете, как заменить сеанс, хорошо используйте его! Возможно, проблемы с эффективностью, которые всегда обеспокоены, могут быть значительно улучшены!