อาจมีสองวิธีขึ้นอยู่กับตรรกะด้านเซิร์ฟเวอร์ของคุณ
วิธีที่ 1: เมื่อเซิร์ฟเวอร์ไม่ฉลาดพอที่จะจัดการสถานะวัตถุ
คุณสามารถส่งรหัสแคชที่ไม่ซ้ำกันของระเบียนไปยังเซิร์ฟเวอร์ได้เช่น ["id1", "id2", "id3", "id4", "id5", "id6", "id6", "id8", "id9", "id10"] และพารามิเตอร์บูลีนเพื่อทราบว่าคุณกำลังร้องขอบันทึกใหม่ (ดึงเพื่อรีเฟรช) หรือบันทึกเก่า (โหลดเพิ่มเติม)
เซิร์ฟเวอร์ของคุณควรรับผิดชอบในการส่งคืนเรกคอร์ดใหม่ (โหลดเร็กคอร์ดเพิ่มเติมหรือเร็กคอร์ดใหม่ผ่าน pull เพื่อรีเฟรช) รวมถึง id ของเร็กคอร์ดที่ถูกลบจาก ["id1", "id2", "id3", "id4", "id5", " id6" , "id7", "id8", "id9", "id10"]
ตัวอย่าง: -
หากคุณกำลังขอโหลดมากขึ้นคำขอของคุณควรมีลักษณะดังนี้: -
{
"isRefresh" : false,
"cached" : ["id1","id2","id3","id4","id5","id6","id7","id8","id9","id10"]
}
ตอนนี้สมมติว่าคุณกำลังขอบันทึกเก่า (โหลดเพิ่มเติม) และสมมติว่ามีการอัปเดตระเบียนโดย "บางคน" และ "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
}
เซิร์ฟเวอร์ของคุณมีหน้าที่รับผิดชอบในการส่งคืน ID ของบันทึกที่ถูกลบซึ่งจะถูกลบหลังจาก last_request_time รวมถึงส่งคืนระเบียนที่อัปเดตหลังจาก 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"]
}
ดึงเพื่อรีเฟรช: -
โหลดมากขึ้น