Ci possono essere due approcci a seconda della logica lato server.
Approccio 1: quando il server non è abbastanza intelligente da gestire gli stati degli oggetti.
È possibile inviare al server tutti gli ID univoci dei record memorizzati nella cache, ad esempio ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] e un parametro booleano per sapere se stai richiedendo nuovi record (pull per aggiornare) o vecchi record (carica altro).
Il tuo server dovrebbe essere responsabile della restituzione di nuovi record (carica più record o nuovi record tramite pull per aggiornare) e id di record eliminati da ["id1", "id2", "id3", "id4", "id5", " ID6" , "ID7", "ID8", "ID9", "ID10"].
Esempio: -
Se stai richiedendo un caricamento maggiore, la tua richiesta dovrebbe assomigliare a questa: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Supponiamo ora di richiedere vecchi record (carica altro) e supponiamo che il record "id2" sia aggiornato da qualcuno e che i record "id5" e "id8" vengano eliminati dal server, quindi la risposta del server dovrebbe assomigliare a questa: -
{
"records" : [
{"id" :"id2","more_key":"updated_value"},
{"id" :"id11","more_key":"more_value"},
{"id" :"id12","more_key":"more_value"},
{"id" :"id13","more_key":"more_value"},
{"id" :"id14","more_key":"more_value"},
{"id" :"id15","more_key":"more_value"},
{"id" :"id16","more_key":"more_value"},
{"id" :"id17","more_key":"more_value"},
{"id" :"id18","more_key":"more_value"},
{"id" :"id19","more_key":"more_value"},
{"id" :"id20","more_key":"more_value"}],
"deleted" : ["id5","id8"]
}
Ma in questo caso se hai molti record memorizzati nella cache locale supponiamo 500, la tua stringa di richiesta sarà troppo lunga in questo modo: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Approccio 2: quando il server è abbastanza intelligente da gestire gli stati degli oggetti in base alla data.
È possibile inviare l'ID del primo record e dell'ultimo record e il periodo di tempo della richiesta precedente. In questo modo la tua richiesta è sempre piccola anche se hai una grande quantità di record memorizzati nella cache
Esempio: -
Se stai richiedendo un caricamento maggiore, la tua richiesta dovrebbe assomigliare a questa: -
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Il tuo server è responsabile di restituire l'id dei record eliminati che viene eliminato dopo last_request_time e di restituire il record aggiornato dopo last_request_time tra "id1" e "id10".
{
"records" : [
{"id" :"id2","more_key":"updated_value"},
{"id" :"id11","more_key":"more_value"},
{"id" :"id12","more_key":"more_value"},
{"id" :"id13","more_key":"more_value"},
{"id" :"id14","more_key":"more_value"},
{"id" :"id15","more_key":"more_value"},
{"id" :"id16","more_key":"more_value"},
{"id" :"id17","more_key":"more_value"},
{"id" :"id18","more_key":"more_value"},
{"id" :"id19","more_key":"more_value"},
{"id" :"id20","more_key":"more_value"}],
"deleted" : ["id5","id8"]
}
Tirare per aggiornare: -
Carica altro