Использование сессий на сайте - PullRequest
3 голосов
/ 03 апреля 2012

Я начал смотреть на переписывание некоторых страниц на клиентском веб-сайте, и я вижу это, например, как только кто-то входит в систему, установлены 53 переменные Sessions .

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

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

Так что мой вопрос в том, каков наилучший способ переделать эти страницы.

  1. Является ли хорошей идеей продолжать использовать такое количество сеансов?
  2. Есть ли лучшая альтернатива использованию сеансов?
  3. Существуют некоторые переменные, которыенеобходимо на ВСЕХ страницах сайта, поэтому лучше ли получать их из базы данных на каждой странице или устанавливать в сеансе?

Я считаю, что необходим только один сеанс, и этоUSERNAME / USER-ID и все остальное следует извлекать из базы данных по мере необходимости.

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 03 апреля 2012

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

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

Вот несколько руководящих принципов, где хранить вещи:

  • Для данных, которые специфичны для пользователя и к которым часто обращаются во всем приложении, используйте сеанс, чтобы уменьшить количество обращений к базе данных

  • Для данных, которые больше илименее статичный и не зависящий от пользователя или связанный с ним, используйте кэш или состояние приложения, чтобы уменьшить количество обращений к базе данных

  • Для данных, относящихся к конкретной странице, используйте ViewState и / или скрытые поля,Однако не используйте ViewState для хранения больших объектов или наборов данных

  • Для данных, которые считаются безопасными для пользователей, рассмотрите возможность использования QueryString для передачи информации со страницы на страницу

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

0 голосов
/ 03 апреля 2012

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

Вы можете сделать так, как подсказывает @walther., но, опять же, я хотел бы получить обоснование, так как помещение их в базу данных поменяет операцию сеанса в памяти на (сетевой) вызов базы данных.Может быть, некоторые значения действительно глобальные, а не специфичные для сессии?В этом случае вы можете переместить их в объект Cache.

По сути, изучите их использование и придумайте соответствующий объем хранилища.Можно оставить их в сеансе, если это то, что необходимо, но вам нужно понять влияние и последствия.

0 голосов
/ 03 апреля 2012

Прежде всего, я очень сомневаюсь, что у вас есть несколько сеансов на пользователя, что означает, что вы ссылаетесь на переменные сеанса.

Во-вторых, все зависит от ваших целей, но, если у вас их многопеременные, может быть, вы должны использовать DB вместо того, чтобы хранить их и извлекать при необходимости.53 переменных сеанса, безусловно, СЛИШКОМ МНОГО для любого веб-сайта.

...