2016-12-31 7 views
0

Поскольку количество моих данных увеличивается каждый день (прямо сейчас> 200 тыс. Строк MySQL за одну неделю), график очень медленный при загрузке. Я думаю, что метод асинхронной загрузки - это правильный путь (http://www.highcharts.com/stock/demo/lazy-loading). Я попытался реализовать его, но он не работает. Пока я могу предоставить свои данные с помощью Python через параметры URL, например. http://www.url.de/data?start=1482848100&end=1483107000, но есть несколько вещей, которые я не понимаю, в коде примера:Большие суммы данных с помощью Highcharts/Highstock (асинхронная загрузка)

  • Если период все данные выбраны в Навигаторе, то все данные обеспечивается мой сервер и загружен график. Так что это то же самое, что и я , что я делаю прямо сейчас без ленивой загрузки. Тогда какая разница?
  • Почему существует второй метод getJSON() без какого-либо параметра URL в приведенном выше примере кода? Его следующий URL-адрес, который пуст. Для чего мне нужен ? Я не понимаю: https://www.highcharts.com/samples/data/from-sql.php?callback=?

И какой метод загрузки данных лучше ?: Это один: chart.series[0].setData(data); или ниже код, который я использую до сих пор:

var ohlc = [], 
volume = [], 
dataLength = data.length, 
i = 0; 
for (i; i < dataLength; i += 1) { 
ohlc.push([ 
data[i]['0'], // date 
data[i]['1_x'], // open 
data[i]['2_x'], // high 
data[i]['3'], // low 
data[i]['4'] // close ]); 

ответ

2

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

  • Основано на демо-версии Highcharts. Вместо того, чтобы загружать слишком много очков, вы запрашиваете уже сгруппированные очки, у вас есть 1,7 миллион ежедневных очков, вы устанавливаете навигатор на «все» (временной диапазон 1998 - 2011), вам не нужны ежедневные данные, поэтому ответ будет включать ежемесячные баллы. Прибыль: получение меньшего количества данных (12 * 14 = 168 вместо 1,7 млн.), Исключение больших данных обработки на стороне клиента (обработка, группировка и т. Д.) -> уменьшение объема памяти и использования процессора для клиента, более быстрая загрузка диаграммы ,

  • Запрос данных находится в формате JSONP. Дополнительная информация о его преимуществах here. Так что на самом деле url имеет 3 параметра - обязательный callback=? и необязательный start=?&stop=? - который указывает временной диапазон времени и его плотность. Первый запрос не имеет параметров start/stop, поскольку у сервера уже установлены значения по умолчанию. После перемещения навигатора к диаграмме запрашиваются и загружаются более подробные точки. Это недостаток ленивой загрузки - после перемещения навигатора ваш запрос на новый набор данных -> частый запрос данных и прерывание из-за сбоя сети.

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

+0

спасибо. Если частый запрос данных и прерывание из-за сбоя сети, есть ли лучшее решение? Вы знаете, как Poloniex или TradingView справляются с этой проблемой? – saitam

+0

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

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

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