Как избежать слишком большого количества запросов к базе данных в asp.net? - PullRequest
2 голосов
/ 01 сентября 2010

Среди методов: статические переменные, viewstate, session и cache для избежания повторной загрузки и уменьшения количества запросов к базе данных.

Как вы думаете, лучший метод из 4 выше?Я думаю, что кеш является лучшим?Или какие-либо другие методы лучше в Asp.net 3.5 или выше?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

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

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

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

1 голос
/ 01 сентября 2010

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

0 голосов
/ 01 сентября 2010

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

viewState - на страницу
Сессия - за сессию (за пользователя)
Заявка - по заявке
Cookie - для пользователя (но не для сеанса, а скорее для сеансов)

Обычно вы используете объект Cache для кэширования объектов на уровне приложения.

Вот и все .. У каждого своя роль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...