Обратите внимание, что переменные сеанса можно использовать в выражени —
ях и в качестве параметров функций или методов. Достаточно просто вставить нужные имя объекта (наподобие имени коллекции) и ключ (т. е. имя перемен —
ной сеанса) в выражение или список параметров в вызове функции или метода.
Имейте в виду, что переменные сеанса занимают во время сеанса память Web — сервера. При запросе посетителем Web-страницы сервер читает с диска перемен —
ные сеанса (и их значения) и запоминает их в объекте session, который нахо — дится в оперативной памяти. Поэтому не забывайте во время сеанса уничтожать переменные сеанса, которые больше не нужны. Чтобы удалить из коллекции пе — ременную сеанса, достаточно присвоить ей значение Empty («Пусто»):
Session(«orderTotal») = Empty
Помните, что присваивание переменной сеанса пустой строки («») или зна — чения Nothing («Ничего»), вроде таких:
59 2 Глава 11. Активные серверные страницы (ASP)
Session(«productCodel») = » »
Session(«productQtyl») = Nothing
вовсе не эквивалентно присваиванию значения Empty.
Элементы с пустым значением — это все равно элементы (пусть и с пустым
значением), находящиеся в коллекции session. Как это ни парадоксально, в языке VBScript Nothing — это непустой объект. Поэтому и пустая строка, и Nothing в качестве значений переменных сеанса занимают во время сеанса па —
мять сервера. Чтобы сервер удалил из коллекции переменную сеанса и освобо — дил занимаемую ей память, нужно присвоить ей значение Empty.
Кроме устойчивых переменных Web-сервер для каждого сеанса создает еще и таймер. Когда сервер запускает сеанс, он устанавливает свойство таймера
Session. Timeout в 20 минут для IIS версии 4 (10 минут для IIS версии 5). Тай —
мер начинает работать с начального интервала времени по умолчанию и отсчи —
тывает время до нуля (0). Когда таймер доходит до нуля, сервер завершает ASP —
сеанс и уничтожает всю связанную с ним информацию. Свойству
Session. Timeout в любом месте можно присвоить новое значение с помощью оператора сценария, например:
Session. Timeout = 1
Данный оператор устанавливает тайм-аут сеанса в одну минуту. (Свойству
Session. Timeout нельзя присвоить время, исчисляемое в долях. минуты.)
Каждый раз, когда обработчик ASP-сценариев получает запрос от браузера,
связанного с каким-либо сеансом, он заносит в таймер этого сеанса начальное значение по умолчанию. Поэтому пока посетитель продолжает запрашивать страни- цы, сеанс остается активным. Если посетитель перестает взаимодействовать с Web —
сайтом, Обработчик Сценариев Не Переустанавливает СВОЙСТВО Session. Timeout, И
после того как оно дойдет до нуля, сервер прекращает этот сеанс.
Таймер сеанса нужен в основном для того, чтобы сервер не хранил данные се- анса вечно и не загромождал зря память и дисковое пространство. Было бы за —
мечательно, если бы при переходе посетителя на другой Web-сайт или прекраще —
нии работы в Internet браузер отправлял серверу сообщение об «отключении». К сожалению, так не бывает — в силу отсутствия состояния в HTTP-соединениях. Конечно, прекращение сеанса посетителя по тайм-ауту может привести к конф — ликту, если посетитель «завис» на одной Web-странице и не выдавал запросов в течение времени тайм-аута, а затем снова начал работать со страницей.