Выбор ответа Middle Кеширование обновлено

Пагинация ленты: курсор или номер страницы

Вопрос

Почему для ленты, в которую постоянно добавляются записи, курсорная пагинация лучше постраничной ?page=3?

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

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

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

Коротко

Правильный ответ: Новые записи сдвигают страницы, и номер страницы даёт дубли или пропуски; курсор указывает на место. Если между загрузкой страниц 2 и 3 сверху добавилось 5 постов, страница 3 начнётся с уже показанных.

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

  1. Курсор короче номера страницы в запросе и сжимается лучше, поэтому ответы приходят быстрее
  2. Новые записи сдвигают страницы, и номер страницы даёт дубли или пропуски; курсор указывает на местоправильный ответ
  3. Параметр ?page= не кешируется HTTP-прокси и CDN, а курсор в заголовке кешируется полностью
  4. Курсор позволяет серверу не хранить ленту в базе: всё состояние выдачи целиком лежит в самом токене курсора

Разбор

Если между загрузкой страниц 2 и 3 сверху добавилось 5 постов, страница 3 начнётся с уже показанных. Курсор («после поста с id X» или непрозрачный токен) стабилен к вставкам. Дубли всё равно стоит отсекать на клиенте по id, иначе diffable data source или ключи списка сломаются. Скорость передачи и HTTP тут ни при чём.

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

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

Термины по теме