2012-04-03 3 views
3

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

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

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

Так что мой вопрос - это лучший способ повторного использования этих страниц.

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

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

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

+1

Вы имеете в виду значения сеанса или несколько сеансов для пользователя? – jrummell

+0

Извините, должен был сказать, что это переменные сеанса - теперь его отредактировали –

ответ

3

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

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

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

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

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

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

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

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

+0

Спасибо за объяснение там, я буду попробуйте использовать некоторые из своих предложений при повторном создании веб-сайта –

0

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

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

+0

Да, я имел в виду Session variables sorry - если вы думаете, что 53 слишком много, я просто нашел страницу, которая устанавливает 123 сеанса: O –

0

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

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

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

Смежные вопросы