サーバー側のロジックに応じて2つの方法があります。
アプローチ1:サーバーがオブジェクトの状態を処理するのに十分スマートでない場合。
キャッシュされたすべてのレコードの一意のIDをサーバーに送信できます(例:["id1"、 "id2"、 "id3"、 "id4"、 "id5"、 "id6"、 "id7"、 "id8"、 "id9"、 "id10"]と、新しいレコード(プルして更新)または古いレコード(さらに読み込む)をリクエストしているかどうかを確認するブールパラメータ。
サーバーは、新しいレコード(プルして更新するか、プル経由で新しいレコードをロードする)と、["id1"、 "id2"、 "id3"、 "id4"、 "id5"、 "から削除されたレコードのIDを返す必要があります。 id6 "、" id7 "、" id8 "、" id9 "、" id10 "]。
例:-
ロードをリクエストする場合、リクエストは次のようになります:-
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
ここで、古いレコード(さらに読み込む)をリクエストし、「id2」レコードが誰かによって更新され、「id5」および「id8」レコードがサーバーから削除されたとすると、サーバーの応答は次のようになります。
{
"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"]
}
しかし、この場合、ローカルにキャッシュされたレコードがたくさんある場合、500を想定すると、リクエスト文字列は次のように長くなります。
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10",………,"id500"]//Too long request
}
アプローチ2:サーバーが日付に従ってオブジェクトの状態を処理するのに十分スマートである場合。
最初のレコードのIDと最後のレコードのID、および前の要求エポック時間を送信できます。このようにして、キャッシュされたレコードが大量にある場合でも、リクエストは常に小さくなります。
例:-
ロードをリクエストする場合、リクエストは次のようになります:-
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
サーバーは、last_request_timeの後に削除された削除済みレコードのIDを返し、last_request_timeの後に "id1"と "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"]
}
プルして更新:-
もっと読み込む