Получи случайную криптовалюту за регистрацию!

#breakfront_analysis_fails Продолжаю рубрику с ошибками анали | Системный сервант

#breakfront_analysis_fails
Продолжаю рубрику с ошибками анализа.

ПАГИНАЦИЯ

Пагинация - это выдача данных по частям, разбитыми на страницы или блоки. Например, товары интернет-магазина можно выдавать, сортируя по дате создания, разными способами:
-с 1го по 50й,
- 15 товаров, следующих за товаром с артикулом 1111-111,
- товары страницы 4 при размещении 100 записей на странице,
- и т. д.

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

При обычном положении вещей мы отдаем только отфильтрованные данные. То есть отправляется запрос на показ товаров с указанием данных для фильтрации. Внутри одной категории товаров не так много, как во всем интернет-магазине (хотя тоже может быть довольно большое количество). То есть в ответе на запрос будет не миллион товаров, а, например, несколько тысяч.

Но вдруг кто-то захотел показывать на главной странице общий каталог товаров. И так как вы уже умеете выгружать список товаров - просто сделали запрос без фильтра. И система пытается выгрузить сразу весь миллион товаров. В результате что-то сломается. Может сломаться вообще все. То есть ваш интернет-магазин может перестать работать у всех пользователей, так как все ресурсы будут уходить на попытку выгрузить все товары.

Поэтому нельзя давать возможность посмотреть сразу ВСЕ. Даже если сейчас в вашем интернет-магазине 500 товаров - через 3 года их может стать 500 тысяч.

И даже если сейчас вы не хотите или не можете делать пагинацию, надо хотя бы сделать ограничение. Например, чтобы можно было получить только первые 1000 записей. Также необходимо делать ограничение, если хотите дать возможность потребителю выбирать количество товаров на одной странице. Например, сделать максимум 100 - тогда пользователь может посмотреть по 10, 15, 50, 100 записей на странице, но не по 1000.

Пагинация делается при разработке и ее необходимо описывать в требованиях. Тут (глава 11 п. 16), тут и тут есть про виды пагинации и какие с ней могут возникнуть трудности.