Bandicoot
@Bandicoot
Вась-программист

Как правильно асинхронно загрузить данные в большую html-таблицу?

Имеется html-таблица. Достаточно большая, как минимум 30 столбцов и 30 строк. В ячейках данные, полученные из БД.
Как можно догадаться, чтобы получить данные для ячеек, нужно сделать соответствующий запрос в БД по определенным критериям. Соотвественно выходит около 900 записей, которые единовременно нужно отрендерить. Это очень сильно тормозит загрузку страницы, а она должна загружаться быстро. Как можно решить эту проблему?

Слать кучу аякс-запросов после загрузки самой страницы тоже на вариант как я понимаю.
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 3
KickeRocK
@KickeRocK
FrontFinish
Загрузилась страница->Совершилось действие(завершение загрузки страницы, допустим)->Ajax запрос к серверу->Ответ от сервера и получение массива с записями -> Рендер в нужном виде.
Как еще это может работать?
Слать кучу аякс-запросов после загрузки самой страницы тоже на вариант как я понимаю.

То есть? Откуда страница(сервер) знает какие вам записи нужны? Или предполагается, что на этой странице уже известны нужные записи в таблице?
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
Получая данные и в цикле делая что-то типа:
$("td:eq("+i+")").html(data[n]);
мы каждый раз заставляем браузер перерисовывать страницу с учетом новых изменений, что естественно - долго.
Но если в этом цикле просто генерить html, не выводя его, а формируя итог в переменной (table_lines например), а по завершении цикла:
$("table").html(table_lines);
Все должно ускориться в разы.
Ответ написан
Комментировать
@PloAl
Тормоза обычно бывают, при попытке собрать все в одну большую строку.
После получение запроса БД, запишите в файл html построчно, а после отправляйте html из файла.
Также можно на клиенте добавлять строки через метод appendChild.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы