Docs học tập
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=10 dễ 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=10 dùng id lớ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)?

On this page