Il cercapersone in ambienti multiutente in cui i dati possono cambiare tra le richieste di pagine è alquanto complicato, nel peggiore dei casi inutile.
La tua prima richiesta ti ha dato una pagina di 10 elementi su un totale di 100. Ora fai un'altra richiesta per la seconda pagina di 10 elementi, ma il numero di elementi è cambiato in 101, con il nuovo elemento esistente in quale sarebbe la prima pagina.
Ora, cosa ritorni? La richiesta era senza dubbio intesa per 10 record non ancora recuperati, ma in caso di restituzione o meno di quel nuovo record? In altre parole, dovremmo restituire i record 12-21, 12-20 + il nuovo record, 10 record a partire dal nuovo record, record 11-20 o cosa?
Applicazioni come Twitter gestiscono semplicemente restituendo i X punti dati più recenti e consentendo agli utenti di recuperarne di più alle estremità come desiderato, ma i loro dati sono strutturati in modo tale che nessun dato si adatti ad un intervallo già recuperato (o se lo fa , come quando si segue qualcuno che è stato pubblicato in quell'intervallo, semplicemente lo ignorano.
Se la tua applicazione può recuperare i dati in base a filtri personalizzati e sequenze di ordinamento, questa non è ovviamente un'opzione, e i problemi che ho descritto iniziano ad aumentare la loro brutta testa.
In questi casi, una soluzione ibrida in cui si seleziona un'ampia porzione di dati utilizzando solo filtri che non causano una situazione in cui nuovi dati possono entrare nel blocco, quindi il filtro e l'ordinamento ulteriormente sul client sono spesso la soluzione migliore.
Nel complesso, quindi, non esiste il modo migliore. Dipende molto dai tuoi dati, dai requisiti di presentazione per esso e dal carico accettabile della rete (restituendo volumi di dati più grandi, naturalmente, significa un carico di rete più elevato) e requisiti di sicurezza (in alcuni domini, viene considerato che restituisce più dei dati minimi assoluti per il cliente un rischio per la sicurezza).