Как правило, нет, не рекомендуется хранить большие массивы данных в сеансе ...
Проблема с хранением «больших» наборов информации в состоянии сеанса заключается в том, что каждый раз, когда вы выполняете обратную передачу формы, это состояние сеанса повторно передается клиенту, что замедляет их взаимодействие с пользователем. (Он хранится в скрытом поле в форме и может увеличиваться в размере из-за плохого сжатия данных в зашифрованный с помощью веб-интерфейса зашифрованный текст - обычно следует избегать помещения больших объемов данных в состояние сеанса, если это возможно)
В тех случаях, когда пользователь должен просматривать «большие» наборы информации, можно создавать сессионные хранилища или чейки для хранения информации в памяти сервера, а затем просто выставлять ключ сеанса в состоянии сеанса; привязать обналиченный на сервере элемент для этого сеанса к ключу сеанса и вашему устройству для повторной передачи при необходимости.
Нечто подобное (псевдокод)
Dictinary<Guid, DataSet> serverCache = new Dictionary<Guid, DataSet>;
This.ApplicationState.Add(serverCache, "DataCache");
// Add users session key and local cached data here
serverCache.Add(This.GetUserSessionGuid(), This.LoadData());
Также +1 к посту о подкачке этих данных - теперь, когда они у вас есть в кеше сервера - вы можете легко справиться с подкачкой.
Все это говорит о том, что хранение этих данных в кеше в течение некоторого фиксированного времени может довольно быстро поглотить память вашего сервера (обычно «дешево» решается с большим объемом памяти ... но все же)
Хорошее сопряжение базы данных и внешнего интерфейса должно быть оптимизировано для обработки нагрузки трафика для данных. Как и предлагалось - сделайте несколько метрик, чтобы узнать, если это даже проблема. Я бы предложил разработать запросы к базе данных, чтобы обеспечить подкачку данных, поэтому каждое представление формы каждым пользователем дополнительно ограничено ...
10 запросов, по одной странице за раз, для 1000 пользователей, возвращающих 100 строк за раз (100 тысяч строк за раз по 1 запросу на пользователя в секунду), гораздо более допустимы для производительности БД, чем 1 запрос, все сразу, возвращающий все 10000 строк для 1000 пользователей (1 миллион строк одновременно)