Il peut y avoir deux approches en fonction de votre logique côté serveur.
Approche 1: lorsque le serveur n'est pas suffisamment intelligent pour gérer les états des objets.
Vous pouvez envoyer tous les identifiants uniques des enregistrements mis en cache au serveur, par exemple ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] et un paramètre booléen pour savoir si vous demandez de nouveaux enregistrements (tirer pour actualiser) ou d'anciens enregistrements (charger plus).
Votre serveur devrait être responsable de renvoyer les nouveaux enregistrements (charger plus d'enregistrements ou de nouveaux enregistrements via pull pour actualiser) ainsi que les identifiants des enregistrements supprimés de ["id1", "id2", "id3", "id4", "id5", " id6 "," id7 "," id8 "," id9 "," id10 "].
Exemple: -
Si vous demandez plus de chargement, votre demande devrait ressembler à ceci: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Supposons maintenant que vous demandez d'anciens enregistrements (chargez plus) et que l'enregistrement "id2" soit mis à jour par quelqu'un et que les enregistrements "id5" et "id8" soient supprimés du serveur, alors la réponse de votre serveur devrait ressembler à ceci: -
{
"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"]
}
Mais dans ce cas, si vous avez beaucoup d'enregistrements locaux mis en cache, supposez 500, alors votre chaîne de requête sera trop longue comme ceci: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Approche 2: lorsque le serveur est suffisamment intelligent pour gérer les états des objets en fonction de la date.
Vous pouvez envoyer l'identifiant du premier enregistrement et le dernier enregistrement et l'heure de l'époque de la demande précédente. De cette façon, votre demande est toujours petite même si vous avez une grande quantité d'enregistrements mis en cache
Exemple:-
Si vous demandez plus de chargement, votre demande devrait ressembler à ceci: -
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Votre serveur est responsable de renvoyer les identifiants des enregistrements supprimés qui sont supprimés après le last_request_time ainsi que de renvoyer l'enregistrement mis à jour après last_request_time entre "id1" et "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"]
}
Tirer pour rafraîchir:-
Charger plus