API Pagination (Cursor vs Offset)
Architecture 🟡 MidDéfinition
Offset : skip/limit simple mais instable sur les données qui changent. Cursor : basée sur un marqueur stable, performante a grande échelle.
Analogie
Offset : 'page 5 d'un livre' (instable si on ajoute des pages). Cursor : 'lire a partir du marque-page' (toujours fiable).
Exemple de code
// Offset: GET /users?page=3&limit=20
// Cursor: GET /users?after=eyJpZCI6MTAwfQ&limit=20
const cursor = Buffer.from(JSON.stringify({ id: lastId })).toString('base64');
Cas d'usage
Offset pour les petits datasets avec UI de pages. Cursor pour les feeds infinis et les APIs a fort volume.
Anti-pattern
Termes liés
En entretien
Quelle différence entre pagination offset et cursor ?
L'offset fait un skip/limit simple mais devient instable si les données changent, alors que le cursor s'appuie sur un marqueur stable et reste performant à grande échelle.
Quand choisir l'un plutôt que l'autre ?
L'offset convient aux petits datasets avec une UI de pages numérotées, le cursor aux feeds infinis et aux APIs à fort volume.
Pourquoi éviter l'offset sur des millions de lignes ?
Parce qu'un OFFSET sur une table de cette taille a des performances catastrophiques ; c'est l'anti-pattern classique de la pagination par offset.
Fiche mise à jour le 2026-09-27