サーバー側のロジックに応じて、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、および前の要求のエポック時間を送信できます。このように、キャッシュされたレコードが大量にある場合でも、リクエストは常に小さくなります
例:-
より多くのロードを要求している場合、要求は次のようになります。-
{
"isRefresh" : false,
"firstId" : "id1",
"lastId" : "id10",
"last_request_time" : 1421748005
}
サーバーは、last_request_timeの後に削除された削除済みレコードのIDを返すだけでなく、「id1」と「id10」の間のlast_request_timeの後に更新されたレコードを返す責任があります。
{
"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"]
}
プルして更新:-

もっと読み込む
