сортировка / разбиение по страницам таблицы javascript (на стороне клиента).Насколько большой слишком большой? - PullRequest
7 голосов
/ 18 июня 2010

Я использую плагин jQuery под названием Tablesorter выполнить сортировку таблицы журналов на стороне клиента в одном из моих приложений. Я также использую надстройку tablepager.

Мне очень нравится отзывчивость, которую сортировка и подкачка на стороне клиента приносит участнику. Мне также нравится, что вам не нужно многократно обращаться к веб-серверу или базе данных.

Однако я вижу, что со временем журнал, который я показываю, может стать довольно большим. Я уверен, что наступит момент, когда пейджинг и сортировка на стороне клиента будут непрактичными. В какой момент эта техника начнет разрушаться под собственным весом? 500 записей? 2000 записей? 10000 записей?

EDIT: Вкратце, какие критерии вы бы использовали, чтобы определить, собираетесь ли вы использовать сортировку / пейджинг на стороне клиента, а не пейджинг на стороне сервера? Размер ожидаемого результата влияет на ваше решение? Где переломный момент?

Ответы [ 3 ]

3 голосов
/ 18 июня 2010

Несколько сотен, вероятно, хорошо, в зависимости от количества столбцов. Это наверняка сломается, когда вы будете иметь дело с данными порядка 10 ^ 3 (тысяч).

Это были мои эмпирические результаты в разных браузерах, но я обычно работал на мощном оборудовании. Я бы ограничил ваш набор данных сотнями.

3 голосов
/ 18 июня 2010

Однако я вижу, что со временем отображаемый журнал может стать довольно большим.Я уверен, что наступит момент, когда пейджинг и сортировка на стороне клиента будут непрактичными.В какой момент эта техника начнет разрушаться под собственным весом?500 записей?2000 записей?10000 записей?

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

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

3 голосов
/ 18 июня 2010

Этот метод, вероятно, потерпит крах, если браузер или клиентский хост не сможет его принять.

Используйте пагинацию на стороне сервера, чтобы предотвратить это.

Сначала я рассмотрю объем данных, которые я отправляю клиенту, что, в свою очередь, вызывает фактор времени загрузки.

Скажем, если каждая строка таблицы имеет размер 200 байт, и я отправляю клиенту 10000 строк (что позволяет клиенту сортировать и разбивать на страницы), я посылаю 200 * 10000 = 2 000 000 байт, или 2 МБ. Браузеру потребуется некоторое время, чтобы загрузить его с сервера, затем некоторое время для того, чтобы плагин сортировки все отсортировал, а затем потребуется некоторое время для разбивки страниц на страницы.

Фактически нагрузка на ваш сервер увеличится с необходимостью отправки ВСЕХ строк клиенту.

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

Если вы используете сортировку на стороне сервера + разбиение на страницы, клиент увидит точную и актуальную информацию. Также скажем, что у вас есть те же 10000 строк, каждые 200 байтов. У вас есть 20 строк на странице. Вы отправляете только 20 * 200 = 4000 байт, что составляет 4 КБ, относительно мало и может обрабатываться браузером / сервером.

...