Puede haber dos enfoques dependiendo de la lógica del lado del servidor.
Enfoque 1: cuando el servidor no es lo suficientemente inteligente como para manejar estados de objetos.
Puede enviar todos los ID únicos de registro en caché al servidor, por ejemplo ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] y un parámetro booleano para saber si está solicitando nuevos registros (extraer para actualizar) o registros antiguos (cargar más).
Su servidor debe ser responsable de devolver nuevos registros (cargar más registros o registros nuevos mediante extracción para actualizar), así como los ID de los registros eliminados de ["id1", "id2", "id3", "id4", "id5", " id6 "," id7 "," id8 "," id9 "," id10 "].
Ejemplo: -
Si está solicitando cargar más, su solicitud debería verse así: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Ahora suponga que está solicitando registros antiguos (cargue más) y suponga que alguien actualiza el registro "id2" y los registros "id5" e "id8" se eliminan del servidor, entonces su respuesta del servidor debería verse así:
{
"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"]
}
Pero en este caso, si tiene muchos registros en caché locales, supongamos 500, entonces su cadena de solicitud será demasiado larga como esta:
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Enfoque 2: cuando el servidor es lo suficientemente inteligente como para manejar estados de objetos según la fecha.
Puede enviar la identificación del primer registro y el último registro y el tiempo de solicitud anterior. De esta manera, su solicitud siempre es pequeña, incluso si tiene una gran cantidad de registros en caché
Ejemplo: -
Si está solicitando cargar más, su solicitud debería verse así: -
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Su servidor es responsable de devolver los id de los registros eliminados que se eliminan después de last_request_time, así como devolver el registro actualizado después de last_request_time entre "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"]
}
Tire para actualizar: -
Carga más