2009-09-25 3 views
2

Я постоянно перетягиваю список (более 200) записей с удаленного сервера и показываю их в таблице (много частей данных в строке). Данные изменяются и со временем меняются. Самый эффективный способ использования JS для экрана. По мере изменения данных я просто уничтожаю DOM и повторно обрабатываю новые данные; есть ли список идентификаторов, которые будут просто обновлять правильные записи tr dom?Эффективный способ отображения большого количества информации в Javascript

Его уже отсортированы и отфильтрованы, чтобы быть правильной информацией (на стороне сервера), поэтому просто показывая ее пользователю, с которым я связан.

Любые предложения были бы полезными. Я использую jQuery для своих запросов, но это можно изменить. Мне нужно знать самый быстрый (латентный) способ потянуть этот большой набор данных и отобразить его в табличном формате.

Редактировать: В этом случае невозможно разбиение на страницы.

Редактировать 2: Бэкэнд - это Python (WSGI), работающий в балансировщике нагрузки и способный вымывать 600 бит/с. Данные доступны только как JSON, а бэкэнд - скорее API.

ответ

1

Вы используете таблицы HTML? Когда-то назад я пересек блог Microsoft из команды IE, в котором указано, что таблицы рендеринга медленны. Очень медленно. Повторное рендеринг всей таблицы каждый раз, вероятно, будет медленнее, чем обновление его значений, но это только моя догадка.

На самом деле, мое мнение здесь заключается в том, что значения обновления будут быстрее, чем элементы повторного рендеринга на странице. Чтобы оптимизировать вашу задержку, вы можете сохранить хэш объектов, сопоставленных, поэтому вам не нужно искать DOM каждый раз, когда вы обновляете значения.

+0

Таблицы рендеринга медленны. Размер зависит от очень многих факторов, и для получения окончательных размеров требуется немало повторных вычислений. – Dykam

+0

Всегда полезно отличать данные от дисплея. Храните данные в массиве, а затем обновляйте измененные поля таблицы. Вы можете легко привязать ячейку к значению массива. Например: array [4] [2] содержит значение из четвертой строки/второго столбца. – Mike

+0

Проверка обновленных/грязных значений займет дольше, чем обновление, насколько я предполагаю. Но я предполагаю, что отображение позиции (массив [4] [2]) в элемент DOM (2-й td из 4-го tr) сделает его быстрее, так как вам не придется искать его снова и снова. – wtaniguchi

1

Если ваш список данных становится действительно большим, подумайте о том, чтобы не отображать все эти данные для пользователя за один раз (если это возможно в вашей ситуации). Мало того, что пользователь заблудится, глядя на столько данных, но браузеру придется отобразить весь список и замедлить работу.

Вы не упомянули, какую технологию на стороне сервера вы используете. Если вы находитесь в .Net, есть несколько элементов управления ASP.Net, которые используют пейджер данных (например, вид сетки). Существует также объект PagedDataSource, который вы можете использовать в использовании (который может использоваться с любым элементом управления ASP.Net, имеющим свойство DataSource). Оба будут разбивать ваши данные на страницы, и только просматриваемая страница будет отображаться за один раз. Это значительно уменьшает задержку.

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