'Кэширование' большой таблицы в ASP.NET

Я понимаю, что каждое обновление страницы, особенно в 'AjaxLand', заставляет мой бэкэнд/класс с фоновым кодом быть названным с нуля... Это - проблема, потому что мой класс (который является членским объектом в Системе. Сеть. UI.Page), содержит МНОГО данных, которые он получает от базы данных. Таким образом, теперь каждое обновление страницы в AjaxLand вызывает меня к созданию большого бэкенда вызовы DB, вместо того, чтобы только снова использовать объект класса из памяти. Кто-либо фиксирует для этого? Это то, где переменные сеанса играют роль? Действительно ли переменные сеанса являются единственной опцией, я должен сохранить объект в памяти, которая связана с однопользовательским и односеансным экземпляром?

5
задан TheNewGuy 19 May 2010 в 15:24
поделиться

4 ответа

Если ваши данные относятся к конкретному пользователю, то подходящим вариантом будет Сеанс . Будьте осторожны, если у вас есть веб-ферма или веб-сад. В этом случае вам понадобится сеансовый сервер или база данных для вашего сеанса.

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

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

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

2
ответ дан 14 December 2019 в 19:04
поделиться

Поскольку вы упоминаете Ajax, я думаю, что вы можете рассмотреть следующие моменты:

Предположим, что этот большой набор данных статичен, а не преходящ, при первом вызове Ajax ваше приложение запрашивает базу данных, извлекает много данных и возвращается клиенту (т.е. браузеру/JavaScript, запущенным в браузере, и т.д.), у клиента теперь все это уже есть в памяти. Впоследствии нет необходимости возвращаться на сервер за теми же данными, которые у вашего клиента уже есть в памяти. Что вам нужно сделать, так это использовать JavaScript для перестроения DOM или чего-то еще. С этого момента все может быть сделано на клиенте.

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

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

0
ответ дан 14 December 2019 в 19:04
поделиться

Вам нужно ASP.Net кэширование.

В частности, Кэширование данных.

2
ответ дан 14 December 2019 в 19:04
поделиться

Взгляните на эту статью MS о различных механизмах кэширования для ASP.NET. Существует раздел под названием «Кэширование произвольных объектов в памяти сервера», который может вас заинтересовать.

1
ответ дан 14 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: