2013-02-21 5 views
3

После того, как пользователь изначально установил сеанс с ASP.NET, с каждым последующим HTTP-запросом, сколько объектов сеанса StateServer немедленно и автоматически выбрано и десериализовано? Например:ASP.NET «Восстановить сеанс» Производительность Hit

  1. ли ВСЕХ объектов сессий принесли момент получения запроса и сессии воссозданный или ...
  2. После сеанса восстановил являются объектами сеанса неправдоподобным и десериализации по отдельности каждым запрос на HttpContext.Session ["..."] сделан?

Ответ оказывает ОГРОМНОЕ влияние на то, как я могу использовать сеанс. Например, если я предварительно набрал значительную часть пользовательских данных в сеанс, а сеанс StateServer полностью десериализуется при каждом HTTP-запросе, тогда я испытаю заметное поражение производительности. Если, однако, предварительно выбранные пользовательские данные десериализуются только при запросе определенных ключей сеанса, то для меня нет никаких проблем.

UPDATE После маркировки ответ на этот вопрос, я обнаружил, что ASP.NET with AppFabric Server 1.1 has an option to have session restored on-demand rather than all-at-once. Это контролируется useBlobMode в вашем web.config.

ответ

1

Session загружает всех пользователей Session информацию при первой загрузке страницы. Затем он сохраняет информацию о сеансе пользователя обратно в хранилище после обработки страницы.

Вы можете получить лучшее понимание через MSDN по адресу custom state store implementations.

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

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