2010-03-31 4 views
1

Я изучил некоторые уроки, просмотрел некоторые ответы SO и не смог найти рецепт моей проблемы.Rails: длительное время отклика HTTP-ответа с помощью ajax. Это хорошая идея? Пожалуйста, помогите с деталями реализации.

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

У меня возникла следующая идея: если данные запрашиваются с сервера MySQL в один момент времени вместо всего набора данных, для получения отдельной точки требуется всего около 1-100 мс.

Я полагаю, что процесс выборки данных может управляться браузером. После того, как пользователь нажимает кнопку, чтобы получить диаграмму, контроллер делает один запрос в базе данных и отображает, скажем, индикатор выполнения, скажем, 1% готовности. Когда браузер получает ответ, он немедленно делает запрос (ajax), и сервер извлекает следующий фрагмент данных и отображает «2%».

И так далее, пока все данные не будут готовы, и сервер отобразит запрошенный график. Может ли это быть реализовано в rails + js, есть ли учебное пособие для решения аналогичной проблемы в Интернете? Я полагаю, что если это возможно вообще, кто-то должен был это сделать раньше.

Я читал несколько статей об ajax, я считаю, что понимаю общие принципы, но сам не делал нетривиального программирования ajax.

Спасибо за ваше время!

ответ

1

Вы можете загрузить страницу с помощью div, который отображает анимированный gif (с указанием «working»). Затем используйте bodyload для запуска вашего запроса ajax и замените содержимое этого div.

<body onload="some function call to Ajax.Updater('chart')"> 
<div id="chart"> 
    <img src="working.gif"> 
</div> 
+0

Это действительно хороший способ сделать это. Пользователь знает, что ваше приложение работает над хрустом данных, и вы можете использовать ту же самую логику программирования, которую вы уже написали. – sosborn

 Смежные вопросы

  • Нет связанных вопросов^_^