ищем решение для эффективного управления данными 1mb сессии в ASP.NET - PullRequest
0 голосов
/ 22 ноября 2011

Этот вопрос касается производительности в .net. У меня есть проект, который показывает 10 000 информации о продукте в сетке.

В проекте .net мы использовали таблицу HTML для отображения информации. В то же время отображается 500 записей на странице. При нажатии на номера страниц отображается соответствующая информация о странице.

Сетка имеет действия, удаление, группировка, сортировка, фильтрация. Чтобы достичь этого, мы в настоящее время извлекаем из БД все 10 000 сведений о продукте (этот промежуточный итог фактически получается из 2 вызовов БД и 2 вызовов веб-служб) и сохраняем их в сеансе, а затем извлекаем мудрые данные страницы из сеанса. Каждая страница переносится с помощью ajax-вызова, и каждый ajax-вызов извлекает данные соответствующей страницы из сеанса -resultset

Теперь это имеет огромное снижение производительности в производственном процессе, когда сеанс поддерживается на сервере SQL,

Я ищу решение, эффективно управляющее этим объектом результата (1 МБ данных на пользователя). Звонок в сервис и БД для получения данных каждой страницы снова тяжелый.

Спасибо СНС

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

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

Какую информацию вы храните в сеансе помимо списка продуктов? Сколько у вас пользователей? Возможно, вы разделяете свои данные, используя IIS сеансы в памяти для наиболее важных и часто запрашиваемых данных, а остальные помещаются на ваш SQL Server или просто для использования сеансов IIS в памяти (если на вашем сервере достаточно ресурсов для это).

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

0 голосов
/ 22 ноября 2011

Мне кажется, что вы получили следующие опции:

  1. Нет необходимости отправлять все продукты пользователю.Использование ajax позволяет легко обрабатывать множество элементов без необходимости передавать все пользователю.

  2. Хранить элементы на стороне клиента.Cookies не вариант, так как они не могут хранить данные 1 МБ.В HTML5 есть что-то под названием LocalStorage, которое вы можете использовать (но тогда потребуется, чтобы ваши пользователи использовали современный браузер).Попробуйте LocalStorage здесь: http://www.quirksmode.org/html5/tests/storage.html

  3. Сохранить таблицу на стороне сервера.т.е. загружать все в хранилище приложений и хранить только ключи в каждом сеансе.Вы также можете использовать внешний кеш ( Каковы преимущества Memcached по сравнению с системой .NET Cache? )

...