2010-06-18 1 views
7

Я использую плагин jQuery под названием Tablesorter , чтобы выполнить сортировку таблицы журналов на стороне клиента в одном из моих приложений. Я также использую надставку tablepager.javascript table sorting/paging (клиентская сторона). Насколько велика большая?

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

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

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

+0

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

ответ

3

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

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

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

+0

Действительно, он (почти) полностью зависит от размера памяти клиента и скорости аппаратного обеспечения (и даже скорости движка JavaScript браузера). –

3

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

Используйте для постраничной разбивки на страницы сервера.

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

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

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

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

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

+0

Я искал ответ, который дал мне немного больше рекомендаций. Я отредактирую свой вопрос, чтобы уточнить это. – Aheho

+0

обновлен. спасибо за дополнительную информацию; это то, что нам нужно. – mauris

3

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

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