Mogą istnieć dwa podejścia w zależności od logiki serwera.
Podejście 1: Gdy serwer nie jest wystarczająco inteligentny, aby obsłużyć stany obiektów.
Możesz wysłać wszystkie unikalne identyfikatory zapisywane w pamięci podręcznej na serwer, na przykład [„id1”, „id2”, „id3”, „id4”, „id5”, „id6”, „id7”, „id8”, „id9”, „id10”] i parametr boolowski, aby dowiedzieć się, czy żądasz nowych rekordów (ściągnij, aby odświeżyć), czy starych rekordów (załaduj więcej).
Twój serwer powinien być odpowiedzialny za zwracanie nowych rekordów (ładowanie większej liczby rekordów lub nowych rekordów poprzez ściąganie w celu odświeżenia), a także identyfikatorów usuniętych rekordów z [„id1”, „id2”, „id3”, „id4”, „id5”, „ id6 ”,„ id7 ”,„ id8 ”,„ id9 ”,„ id10 ”].
Przykład: -
Jeśli chcesz załadować więcej, Twoje żądanie powinno wyglądać mniej więcej tak:
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
Załóżmy teraz, że żądasz starych rekordów (załaduj więcej) i załóżmy, że rekord „id2” został przez kogoś zaktualizowany, a rekordy „id5” i „id8” zostały usunięte z serwera, a następnie odpowiedź serwera powinna wyglądać mniej więcej tak:
{
"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"]
}
Ale w tym przypadku, jeśli masz wiele lokalnych zapisanych w pamięci podręcznej danych, przypuśćmy, że 500, to łańcuch żądania będzie zbyt długi:
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
Podejście 2: Gdy serwer jest wystarczająco inteligentny, aby obsłużyć stany obiektów zgodnie z datą.
Możesz wysłać identyfikator pierwszego rekordu oraz ostatniego rekordu i czasu epoki poprzedniego żądania. W ten sposób Twoje żądanie jest zawsze małe, nawet jeśli masz dużą liczbę zapisanych w pamięci podręcznej rekordów
Przykład: -
Jeśli chcesz załadować więcej, Twoje żądanie powinno wyglądać mniej więcej tak:
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
Twój serwer jest odpowiedzialny za zwrócenie identyfikatora usuniętych rekordów, które są usuwane po ostatnim czasie żądania, a także zwrócenie zaktualizowanego rekordu po czasie ostatniego żądania między „id1” a „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"]
}
Pociągnij by odświeżyć:-
Załaduj więcej