2013-08-02 2 views
1

У меня есть страница веб-форм Asp.Net. У меня есть 8 запросов на странице на одной из сложных страниц в приложении. 2 запроса могут быть кэшированы, и они уже кэшированы, а остальные 6 требуют попадания в БД. Страница загружается штрафом без какой-либо задержки в течение 2 секунд. Однако, как наилучшая практика и производительность, я хочу знать, должен ли я сделать их асинхронными. Проблема в том, что если я делаю их асинхронными, для каждого запроса нужно использовать разные соединения, потому что в настоящее время я сохраняю объект подключения в HttpContext.Current.Items, и это будет недоступно, если я нахожусь в другом потоке.Запись синхронных запросов или асинхронных сообщений

Должен ли я использовать Task api или должен ли я оставить их синхронными? Пожалуйста, предложите лучшую практику.

ответ

1

На мой взгляд, лучшим вариантом является объединение этих запросов вместе. Если это невозможно, запустите их, используя, по крайней мере, SQL-соединение. Использование async, вероятно, не увеличит время, пока вы не будете использовать совместное соединение sql, но я думаю, что это невозможно.

0

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

+0

Более высокая производительность все, что я требую. Отдельные вызовы в БД не являются моей проблемой, и это не будет препятствовать производительности в любом случае из-за механизма объединения соединений. – Jack

0

Если вы хотите работать над оптимизацией времени доступа к базе данных, попробуйте реализовать то, что предложили Garath и mesterak - это должно дать вам дополнительные улучшения производительности.

Однако я должен сказать, что если бы моя страница загружалась до 2 секунд, я бы не стал заниматься оптимизацией в этой области.

пар вопросы, чтобы спросить себя, прежде чем продолжить работу над этим:

  • Как вы знаете, если его обращение к базе данных, которые делают наибольшее влияние на время загрузки страницы?
  • Вы видели трассировку страницы или предположили, что это база данных, которая оказывает наибольшее влияние?
  • Что вы сделали для оптимизации других элементов?

Вот несколько других предложений для вас попробовать:

  • Создать страницу трассировки и проанализировать результаты. Здесь хорошо tutorial.
  • Проверьте вашу страницу, используя PageSpeed и посмотреть, если есть какие-либо оптимизации в других областях
  • Проверьте эти tutorials о том, как оптимизировать другие элементы страницы
Смежные вопросы