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

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

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

Слать кучу аякс-запросов после загрузки самой страницы тоже на вариант как я понимаю.
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы