Я понимаю, что каждое обновление страницы, особенно в 'AjaxLand', заставляет мой бэкэнд/класс с фоновым кодом быть названным с нуля... Это - проблема, потому что мой класс (который является членским объектом в Системе. Сеть. UI.Page), содержит МНОГО данных, которые он получает от базы данных. Таким образом, теперь каждое обновление страницы в AjaxLand вызывает меня к созданию большого бэкенда вызовы DB, вместо того, чтобы только снова использовать объект класса из памяти. Кто-либо фиксирует для этого? Это то, где переменные сеанса играют роль? Действительно ли переменные сеанса являются единственной опцией, я должен сохранить объект в памяти, которая связана с однопользовательским и односеансным экземпляром?
Если ваши данные относятся к конкретному пользователю, то подходящим вариантом будет Сеанс . Будьте осторожны, если у вас есть веб-ферма или веб-сад. В этом случае вам понадобится сеансовый сервер или база данных для вашего сеанса.
Если ваши данные относятся к уровню приложения, то можно использовать Кэш данных приложения . Будьте осторожны, если у вас ограниченная оперативная память и объем данных огромен. Кэш может опустошиться в неподходящий момент.
В любом случае вам нужно будет проверить, как ваше приложение работает с вашими изменениями. Возможно, вы даже сочтете, что возврат к базе данных будет наименее плохим вариантом.
Кроме того, вы можете посмотреть на Ленивая загрузка некоторые данные, чтобы сделать их менее тяжелыми.
Поскольку вы упоминаете Ajax, я думаю, что вы можете рассмотреть следующие моменты:
Предположим, что этот большой набор данных статичен, а не преходящ, при первом вызове Ajax ваше приложение запрашивает базу данных, извлекает много данных и возвращается клиенту (т.е. браузеру/JavaScript, запущенным в браузере, и т.д.), у клиента теперь все это уже есть в памяти. Впоследствии нет необходимости возвращаться на сервер за теми же данными, которые у вашего клиента уже есть в памяти. Что вам нужно сделать, так это использовать JavaScript для перестроения DOM или чего-то еще. С этого момента все может быть сделано на клиенте.
Теперь предположим, что данные не статичны, а преходятся,кэширование на сервере путем их размещения — это сеанс, который в любом случае не будет решением, которое вам нужно. Каждый раз, когда ваш клиент отправляет запрос на сервер, а сервер просто возвращает то, что находится в кэше (сеансе), данные уже устарели и нет никакой разницы с данными, которые клиент уже имеет в памяти.
Дело в том, что если данные статичны, сохраните круговые поездки на сервер, как только у вас уже есть данные в памяти. Если данные преходящие, я боюсь, что нет дешевого решения, кроме повторного запроса или повторного извлечения данных каким-либо образом и отправки всего обратно клиенту.
Вам нужно ASP.Net кэширование.
В частности, Кэширование данных.
Взгляните на эту статью MS о различных механизмах кэширования для ASP.NET. Существует раздел под названием «Кэширование произвольных объектов в памяти сервера», который может вас заинтересовать.