Выбор ответа Middle Кеширование обновлено
Пагинация ленты: курсор или номер страницы
Вопрос
Почему для ленты, в которую постоянно добавляются записи, курсорная пагинация лучше постраничной ?page=3?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Новые записи сдвигают страницы, и номер страницы даёт дубли или пропуски; курсор указывает на место. Если между загрузкой страниц 2 и 3 сверху добавилось 5 постов, страница 3 начнётся с уже показанных.
Варианты ответа
- Курсор короче номера страницы в запросе и сжимается лучше, поэтому ответы приходят быстрее
- Новые записи сдвигают страницы, и номер страницы даёт дубли или пропуски; курсор указывает на местоправильный ответ
- Параметр
?page=не кешируется HTTP-прокси и CDN, а курсор в заголовке кешируется полностью - Курсор позволяет серверу не хранить ленту в базе: всё состояние выдачи целиком лежит в самом токене курсора
Разбор
Если между загрузкой страниц 2 и 3 сверху добавилось 5 постов, страница 3 начнётся с уже показанных. Курсор («после поста с id X» или непрозрачный токен) стабилен к вставкам. Дубли всё равно стоит отсекать на клиенте по id, иначе diffable data source или ключи списка сломаются. Скорость передачи и HTTP тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.