2013-06-21 2 views
0

У меня есть веб-приложение, на котором есть множество выпадающих списков и сеток.Может ли AJAX использоваться при тяжелых операциях с БД

В настоящее время, когда изменяется значение одного раскрывающегося списка, элементы связанного с ним выпадающего списка заполняются (тяжелая операция с БД) и целая страница infact публикуется на сервере.

Вопрос: Может ли Ajax быть рекомендованным в таком случае? Я слышал, что Ajax хорош только для легких операций.

+1

Часто ли меняются параметры или они зависят от пользователя? Если нет, я бы подумал о том, чтобы кэшировать эту информацию на веб-сервере, поэтому вам не нужно каждый раз совершать поездку в db, и в этом случае ajax будет отличным выбором. –

+1

Я согласен с тем, что оба Карла и Роб оба являются хорошими ответами - я бы также посмотрел, что можно сделать, чтобы ускорить длительную операцию - было упомянуто кэширование, но вы заглянули в планы выполнения длинных запросов? Если вы используете sql server 2008+ theres, вы можете показать план exec при запуске запроса inSSMS, это часто даст вам подсказки и код для реализации подсказок (как правило, отсутствующих индексов), которые имеют огромное значение. Также рассмотрите возможность прекращения некоторых представлений в тех случаях, когда вы выполняете вложенные запросы sql и соединяете noto с ними вместо вложенности - также может быть очень полезно. – bUKaneer

+1

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

ответ

2

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

Использование Ajax/пост/все, чтобы начать процесс затем запрашивать обратную связь через регулярные промежутки времени, используя один из:

  • JS опроса (setInterval)
  • Серверный посыла События
  • SignalR

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

+0

Хорошая информация. Будьте внимательны для всех! –

+0

@SNash. Благодаря! Не забудьте отметить наиболее полезный ответ как правильный. –

3

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

1

Ответ, конечно, вы можете использовать AJAX для тяжелых операций с БД, но, возможно, лучший вопрос СЛЕДУЕТ использовать его; ответ зависит от этого. Ножницы хороши для резки бумаги, но не во дворе; правильный инструмент для правильной работы.

Отступив на секунду, похоже, что ваш выбор технологии разработки может быть частью вашей проблемы, насколько это важно, следует ли использовать AJAX для тяжелых вызовов БД. Я хочу сказать, что если вы пытаетесь избежать полных обратных ссылок для страницы, то вы можете рассмотреть более клиентскую реализацию (например, KnockoutJS, Backbone, Ember, AngularJS и т. Д.), Которые могут использовать вызовы на сервере, чтобы получить данные, необходимые для определенной части экрана (через модели просмотра).