0

我试图找到一种有效的方法来在服务器和客户端之间传输数据而不会出现一致性错误,同时保持较低的网络利用率。我以前曾多次遇到这种情况,并且总是最终使用以下两个计划之一:

计划 #1: 客户端请求所有可用数据(在连接时或在第一次请求时)。客户端缓存数据并将其用作自己的本地数据库(存储在 RAM 中)。在数据发生任何更改(添加、删除、更新)时,服务器会通知客户端,然后客户端会更新其缓存

优点: 初始传输后网络利用率低(所有数据都被缓存)。数据动态更新

缺点: 服务器可能需要发送大量数据。这可能会导致网络拥塞甚至导致客户端崩溃

计划#2: 客户按需请求一些数据(例如检索列表的前25 个项目)。如果需要更多数据,客户端会请求接下来的 25 个项目,依此类推。

优点: 简单。无需一次传输所有数据

缺点: 服务器无法动态更新客户端的数据,因为它不知道每个客户端拥有什么数据。出于同样的原因,客户端无法缓存任何数据,因为它们可能缓存过时的项目。整个系统使用过程中的高网络利用率。

处理这个问题的最佳方法是什么?

4

1 回答 1

2

如果我理解正确,您有某种顺序的数据列表,“ (例如,检索列表的前 25 项) ”。

如果是这种情况,您可以让服务器在每个连接的基础上保持“直到记录 x”指示器。例如,假设您最初发送了前 25 个项目。服务器保存一个记录,客户端 x 已经到达记录 25。然后客户端需要记录 57,所以服务器发送直到记录 57 的所有内容。假设记录 36 得到更新。服务器只能将该更新发送给已经起床到至少记录 36 的客户端。

这允许缓存和更新,如果实际上您的数据是一组顺序记录。

于 2013-09-15T14:35:03.417 回答