Выбор ответа Middle System design на фронте спрашивают часто обновлено

Пагинация для живой ленты

Вопрос

Лента новостей, куда постоянно добавляются новые посты сверху. Какую пагинацию выбрать для подгрузки при скролле вниз?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Курсорную: ?cursor=<id&limit=20. Курсор указывает на конкретный последний элемент, поэтому новые посты сверху не сдвигают выдачу: нет дублей и пропусков.

Варианты ответа

  1. Offset/limit: ?offset=40&limit=20
  2. Номер страницы: ?page=3&size=20
  3. Курсорную: ?cursor=<id>&limit=20правильный ответ
  4. Всю ленту одним запросом с кешем

Разбор

Курсор указывает на конкретный последний элемент, поэтому новые посты сверху не сдвигают выдачу: нет дублей и пропусков. При offset и номере страницы вставка 5 новых постов сдвинет окно, и пользователь увидит 5 повторов. Вся лента одним запросом это огромный ответ и долгий первый экран. Ещё плюс курсора: база ищет по индексу от курсора, а большой offset заставляет перебирать пропущенные строки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.