Backend nền tảng
F2 · Pagination: Offset và Cursor
Offset dễ nhảy trang nhưng chậm khi offset lớn. Cursor nhanh và ổn định hơn cho feed.
F2 · Junior
Offset: "bỏ qua 20 trang đầu" – phải đếm lại từ đầu. Cursor: kẹp bookmark, lần sau mở tiếp từ bookmark.
Cốt lõi
- Offset:
?offset=20&limit=10dễ nhảy trang, nhưng chậm khi offset lớn và lệch nếu có bản ghi mới. - Cursor:
?cursor=xyz&limit=10dùngidlớn hơn id cuối, nhanh và ổn định, khó nhảy tới trang bất kỳ.
Đánh đổi
Trang quản trị, dữ liệu ít → Offset. Feed, cuộn vô hạn, dữ liệu lớn → Cursor.
Trong thực tế
Newsfeed Instagram dùng cursor pagination.
Bug thường gặp
Dùng offset cho feed: có bài mới chèn lên đầu → trang 2 lặp lại bài của trang 1; offset lớn thì truy vấn chậm dần.
Tự hỏi lại
Cursor nên mã hóa gì bên trong (id, timestamp)?