Использование сеанса для предотвращения запросов туда и обратно - PullRequest
1 голос
/ 18 ноября 2010

У меня есть Telerik Menu в usercontrol, который находится на странице aspx, мне нужно создать меню на основе зарегистрированного пользователя.

Поэтому мне нужно привязать источник данных к меню.Мой веб-сайт будет иметь более 1000 пользователей в день.Для предотвращения запросов туда и обратно я генерирую меню из сеанса.
Я использую сеанс InProc для этой цели и сохраняю данные Sql в сеансе.

Размер объекта сеанса для меню составляет около 40 байтов.Итак (1000 пользователей) * (40 байт) = около 40К памяти сервера.У меня нет другого сервера для использования StateServer Session.А также я собираюсь использовать сессию и для некоторых других целей.

Есть ли лучшее решение для этого, потому что производительность играет ключевую роль для моего сценария.Или я уже выбрал лучшее решение?

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Не похоже, чтобы у вас были какие-либо проблемы с этим, но вас может заинтересовать мой ответ на этот вопрос .

Вообще говоря, сеанс является хорошим местом для кэширования данных, которые:

  1. относительно небольшой,
  2. Дорого получить, а
  3. Не нужно использовать вне сеанса данного пользователя

Звучит так, как будто вы соответствуете как минимум двум первым требованиям.

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

  • Персональный идентификатор пользователя сохраняется в сеансе.
  • MenuKeyRepository получит список идентификаторов клавиш пунктов меню, которые должны появиться для данного идентификатора человека, и вернет этот список как «MenuKey».
  • MenuRepository будет генерировать фактическое меню на основе заданного MenuKey.

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

Я не знаю, будет ли этот подход иметь смысл для вас, но он есть, для чего он стоит.

1 голос
/ 18 ноября 2010

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

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