Чи зменшує навантаження на сервер зменшення навантаження на сервер? (теорія)


11

Мені було цікаво, в чому причина пагинації? Він використовується, оскільки він зменшує навантаження на сервери, оскільки ми технічно обмежимо кількість рядків, що повертаються на сторінку?

Я хотів щось зробити без пагинації, але враховуючи, що я новачок у цьому (я аматор) почав цікавитись, чи добре це технічно чи ні.


Ви дійсно хочете зачекати, коли ваш браузер завантажить і видасть тисячі рядків питань, які вас не хвилюють, натискаючи на цьому сайті "Запитання"?
Джеремі

3
Пагинація більше для людей, ніж БД.
Мальфіст

Відповіді:


10

Існує цілий ряд причин виникнення пагинації, зменшення завантаження сервера - лише одна. Однак Стівен Орр піднімає дійсну точку - вам все-таки потрібно спочатку знайти кількість даних. Ви повинні переконатися, що запит швидкий і не надмірно завантажує ваш сервер.

Інші причини:

  • Зменшення кількості повернених клієнтом даних за один раз. Якщо у вас багато даних, це може зайняти значну кількість часу і зайняти багато пам'яті.
  • Користувача часто цікавлять не всі дані, а лише останні (скажімо). Повертаючи лише пару сторінок даних, ви не отримуєте даних, які користувач ніколи не побачить.

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


2
+1 Я писав щось подібне, але ви були занадто швидкі. Дозвольте лише додати, що вміст сторінки, що використовує сторінки, також (ab) використовується як спосіб відображення більшої кількості доповнень.
янніс

Ви також можете створювати сторінки, не знаходячи, скільки сторінок існує, знаючи, що є більше даних, ніж підходить для поточної сторінки досить добре.
Карло Куйп

3

Він змінюється залежно від реалізації.

Це пришвидшить візуалізацію сторінки, але це не обов'язково зменшить навантаження на сервер. Більшість наївних алгоритмів розбиття сторінок потрібно спочатку виконати запит, щоб вирішити, скільки сторінок має бути, а потім знову зробити запит, щоб отримати набір результатів "підказка".


Більшість наївних алгоритмів пагінації потрібно спочатку виконати запит, щоб вирішити, скільки сторінок повинно бути : Але накопичений стрес на db запиту підрахунку та запит на отримання загальновідомого результату майже завжди набагато менший, ніж на отримання всього запиту за загальним сценарієм (з добре структурованою реляційною базою даних)
yannis

@YannisRizos, абсолютно. Я щойно бачив темну сторону цього, з неймовірно погано структурованою реляційною базою даних (багато наших запитів ПРИЄДНАЙТЕСЯ 7 або 8 різних таблиць для отримання результату).
Стів Хілл

@YannisRizos: визначте "стрес на db". Ви все ще перебираєте два запити через лінію. Ви здійснюєте сторінку в запиті (супер-вибір рядків) чи кешуєте результати в іншому рівні? Є занадто багато змінних, щоб сказати, що занадто багато напруги на дБ. Я заперечую, що правильно виконане в транзакційному сенсі (чи дозволяєте ви брудне читання / непослідовне підрахунок сторінок?) Збільшує db "стрес" / навантаження, але спрощує програмування.
Черга Jé

@Xepoch Я не сказав занадто великого стресу, просто будь-яка кількість плюс обмежений вибір <повний вибір. І це лише для загальних сценаріїв на добре структурованих реляційних даних.
янніс

1

Найбільше значення, яке ви отримуєте від пагинації, - це підвищення швидкості вашої програми шляхом:

1 - Обмеження даних, що передаються між клієнтом та сервером. Немає сенсу читати 1000000 клієнтів, якщо користувач шукає 10 з них.

2- Значно перевищуючи ефективність запиту, отримуючи лише ті рядки, які можуть вміщуватися у вікні користувача. Немає сенсу читати 1000000 клієнтів, якщо користувач перегляне перші 10 клієнтів.

3 - Пагинація допомагає, надаючи більш свіжі дані. Якщо у вашій програмі відображається багато рядків даних, а ваш домен програми потребує великого оновлення рядків даних у відображеній таблиці, швидше за все, до того моменту, коли ви перейдете на сторінку 20 списку сторінок, дані на деяких рядках були б змінився. Придумайте додаток, який читає ціни акцій або наявні номери в готелі. Отримання старих даних та розміщення їх на клієнті не приносить користі.

Пагинація - це одна стратегія, яка в поєднанні з фільтруванням та розумінням того, як потрібен кінцевий користувач відповідно до конкретного сценарію (який, як очікується, призведе до гарного дизайну для задоволення цієї потреби), значно покращить додаток, особливо коли кілька користувачів потрапляють у базу даних одночасно.

Пагинація не завжди є тривіальною для програми. У деяких випадках це просто, але іноді дуже складно написати так, що SQL-запит виконується, не виконуючи повне сканування таблиці. Це, звичайно, залежить від ваших індексів, стану фільтра та вашої заяви Where.


-4

Пагінація, на мій погляд, є матір'ю всіх передчасних оптимізацій. Абсолютно нормально писати свій сайт без пагірування.

Якщо після випуску ви виявите, що ви завантажуєте занадто багато даних за один дзвінок, або що ваші користувачі змушені чекати інформації, яку вони хочуть, тому що це зайнято завантаженням даних, які вони не хочуть, продовжуйте і напишіть рішення Ajax яка завантажує сторінку лише під час прокрутки вниз людей (див .: Twitter, Tumblr, пошук зображень Google).

Редагувати: Другий параграф вище був написаний з припущенням, що загальна відповідь буде "але якщо ви знаєте, що збираєтесь боліти в якийсь момент, ви можете також зробити це рано, а не витрачати час на розробку чогось, що ви збираєтеся кинути". геть ».

Окрім того, що є матір'ю всіх передчасних оптимізацій, я вважаю, що пагінація - це кошмар UX і що є кращі рішення, які не потребуватимуть особливих додаткових розробок у верхній частині сторінки.

Незважаючи на кількість спільних записів, я залишаю цю відповідь тут, тому що я стою проти настроїв, хоча це, можливо, не було найкращим моїм письмом.


5
Я категорично не погоджуюся з цим твердженням, що сторінка не для оптимізації БД, це надання даних у керованих фрагментах для людей. Чи змогли б ви прочитати Гаррі Поттера, якби все було на одній сторінці? Чи могли б ви подати податки, якби Податковий кодекс був на одній сторінці?
Мальфіст

@Malfist: Єдина причина, коли ти не можеш працювати з цими речами на одній сторінці, це тому, що сама сторінка була б занадто великою. Це не проблема веб-сторінок. Отже, сайти, про які я цитував, знайшли кращі рішення щодо пагинації, в той час як Lolcats наразі має майже 2000 сторінок, які неможливо докорінити жодним розумом. Але, це твоя голова, використовуй як хочеш.
pdr

1
@Malfist: Крім того, розділення речей на керовані шматки є досить справедливим, якщо ці шматки не зміщуються. Якщо я читаю сторінки 1-4, то я хочу повернутися наступного разу і прочитати сторінку 5. Але в багатьох випадках на сторінках, що страждають, - це списки предметів, найновіші спочатку. Отже, коли я повернусь до сторінки 5 пізніше, вона фактично показує половину сторінки 3 та половину сторінки 4 від останнього разу, коли я був там, оскільки в списку є цілі нові 1,5 сторінки.
pdr

2
-1 Я також категорично не згоден з цим. Я навіть не впевнений, з чого почати пояснювати, чому.
Craige

@Craige: Добре, тоді. Я, звичайно, не в змозі викласти багато аргументів на те.
pdr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.