Je nach Ihrer serverseitigen Logik gibt es zwei Ansätze.
Ansatz 1: Wenn der Server nicht intelligent genug ist, um Objektzustände zu verarbeiten.
Sie könnten alle eindeutigen IDs der zwischengespeicherten Datensätze an den Server senden, z. B. ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] und einen booleschen Parameter, um zu wissen, ob Sie neue Datensätze (zum Aktualisieren abrufen) oder alte Datensätze (mehr laden) anfordern.
Ihr Server sollte dafür verantwortlich sein, neue Datensätze (weitere Datensätze laden oder neue Datensätze per Pull-to-Refresh) sowie die IDs gelöschter Datensätze aus ["id1", "id2", "id3", "id4", "id5", "id6", "id7", "id8", "id9", "id10"] zurückzugeben.
Beispiel:- Wenn Sie mehr Last anfordern, sollte Ihre Anfrage in etwa so aussehen:-
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Nehmen wir an, Sie fordern alte Datensätze an (mehr laden) und nehmen wir an, dass der "id2"-Datensatz von jemandem aktualisiert wird und die "id5"- und "id8"-Datensätze vom Server gelöscht werden, dann sollte die Antwort Ihres Servers etwa so aussehen:-
{
"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"]
}
Aber in diesem Fall, wenn Sie eine Menge lokaler Cache-Datensätze haben, die 500 annehmen, dann wird Ihr Anforderungsstring zu lang sein wie dieser:-
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Ansatz 2: Wenn der Server intelligent genug ist, um Objektzustände je nach Datum zu behandeln.
Sie können die Kennung des ersten Datensatzes und des letzten Datensatzes sowie die Epochenzeit der vorherigen Anfrage senden. Auf diese Weise ist Ihre Anfrage immer klein, auch wenn Sie eine große Anzahl von Datensätzen im Cache haben.
Beispiel:- Wenn Sie mehr Last anfordern, sollte Ihre Anfrage in etwa so aussehen:-
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Ihr Server ist verantwortlich für die Rückgabe der IDs der gelöschten Datensätze, die nach der last_request_time gelöscht wurden, sowie für die Rückgabe der aktualisierten Datensätze nach der last_request_time zwischen "id1" und "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"]
}
Zum Aktualisieren ziehen:-
Mehr laden