Подтвердить что ты не робот

Разбиение страниц: сторона сервера или клиентская сторона?

Чем лучше справляться с разбиением на страницы? Server или делать это динамически с помощью javascript?

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

Каковы все мысли?

4b9b3361

Ответ 1

Правильный ответ зависит от ваших приоритетов и размера набора данных, который должен быть разбит на страницы.

Паганирование на стороне сервера лучше всего:

  • Большой набор данных
  • Более быстрая загрузка начальной страницы
  • Доступность для тех, кто не работает javascript

Пагинация на стороне клиента лучше всего подходит для:

  • Малый набор данных
  • Более быстрая последующая загрузка страницы

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

Конечно, преимущество клиентской стороны при последующих временах загрузки страницы уменьшается, если вы используете Ajax для загрузки последующих страниц.

Ответ 2

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

Лучший способ сделать это для таких приложений AJAX - заставить AJAX вызвать сервер для следующей страницы и добавить обновление текущей страницы с помощью клиентской стороны script.

Ответ 3

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

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

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

Ответ 4

Серверная сторона - отправьте клиенту достаточно содержимого для текущего представления.

Ответ 5

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

И для больших размеров данных ответ очевиден.

Ответ 6

Вы имеете в виду, что ваш JavaScript имеет все данные в памяти и показывает одну страницу за раз? Или что он загружает каждую страницу с сервера по мере необходимости, используя AJAX?

Если это последнее, вам также может понадобиться подумать о сортировке. Если вы сортируете с помощью JavaScript, вы сможете сортировать только одну страницу за раз, что не имеет особого смысла. Поэтому сортировка должна выполняться на сервере.

Ответ 7

В практическом мире ограничений я бы на стороне сервера сохранил все ресурсы, связанные с отправкой данных. Кроме того, сервер должен защитить себя от вредоносного/неисправного клиента, запрашивающего ОГРОМНУЮ страницу.

После того, как этот код будет счастливым, я добавлю "smarts" к клиенту, чтобы получить "следующую" и "предыдущую" страницу и удерживать это в памяти. Когда пользовательские страницы перейдут на следующую страницу, обновите кеш.

Если клиентское программное обеспечение выполняет такое кэширование страниц, подумайте, как быстро ваши данные возрастут (скорее всего, это изменится), и если вы должны проверить, что ваша кэшированная страница данных по-прежнему действительна. Возможно, повторите запрос, если возраст больше 2 минут. Возможно, в нем есть "грязный" флаг. Что-то вроде того. Надеюсь, вы сочтете это полезным.:)

Ответ 8

Я предпочитаю разбиение страниц на стороне сервера. Однако при его внедрении вам необходимо убедиться, что вы оптимизируете свой SQL должным образом. Например, я верю в MySQL, если вы используете параметр LIMIT, он не использует индекс, поэтому вам нужно переписать свой sql для правильного использования индекса.

G-Man