Хранение XML в переменной сеанса ASP - PullRequest
2 голосов
/ 20 марта 2011

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

Я не хочу создавать 30 различных переменных Session, поэтому я думаю о сохранении аналогичных переменных в XML-документе, а затем в переменной Session. Вот так ...

Session("UserRights") = "<xml><canEdit>1</canEdit><foo>bar</foo></xml>"
Set oDOM = Server.CreateObject("MSXML2.FreeThreadDOMDocument.3.0") 'etc...

Это хорошая идея? Получу ли я больший прирост производительности, анализируя эту строку xmlString при каждой загрузке страницы? Я знаю, что не должен хранить объект (например, словарь) в сеансе (поэтому я выбираю строку XML), но мне нужен новый подход ...

Сайт в настоящее время написан на классическом asp, но мы замедляем миграцию на asp.net, используя (aspcompat = "true"). Это не лучший подход к миграции, но у нас есть сроки, которые мы должны соблюдать.

Спасибо за совет

1 Ответ

0 голосов
/ 22 марта 2011

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

У меня похожая ситуация, когда у меня есть контактная информация для пользователя, который должен переходить со страницы на страницу.Получив его из базы данных, я помещаю его в переменные сессии, которые выглядят как Session("user.first-name"), Session("user.last-name"), Session("user.address") и т. Д. Есть одна конкретная переменная ("user.id"), которую я проверяю, чтобы убедиться, что сессия не прошла.т истек.Итак, if IsEmpty(Session("user.id")) or Session("user.id") = "" Я знаю, что сессия исчезла, и мне нужно это учитывать.Хотя использование «точечной нотации» в моих именах переменных сеанса бессмысленно, это помогает мне понять, что все эти переменные связаны, в отличие от наличия дюжины или более имен, таких как «имя», «фамилия»,и т. д. У меня есть одна функция, которая загружает все эти переменные, и другая, которая уничтожает их, когда я закончу с ними, что помогает управлять сложностью наличия большого количества переменных сеанса.

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

...