2017-06-16 34 views
0

假设我有一个动态列表,随着更多项目被扫描(在本例中通过蓝牙),该动态列表会扩展。这个想法是根据标准过滤列表中的一些项目,因为我已经建立了一个端点来检查项目。构建对照后端列表的最佳方式

难道会更好:

  1. 完整列表,删除动态添加的项目,检查整个列表针对端点,然后将其展示给用户?即fetch(/filterClaims/:list)

  2. 检查每个项目,因为它们被检测到(通过拨打端点)?即fetch(/isclaimed/:id)

  3. 发送需要被过滤掉事先给客户端(在这种情况下,手机)的所有物品的清单,并为他们检测筛选项目?即fetch(/claims)

已知到后端设备的量可以变化很大,目前最大为约100个装置,但是这可能会扩大到1000(S)

(在一个侧面说明,如果有人有意见重新提出问题标题,是我的客人:))

+0

我不会说我的方法是最好的,但在我的情况下,我最初获取列表并将其存储在缓存中。从那里,我再次请求列表,然后我运行最初存储的列表对新提取的列表。我使用一种方法来过滤列表中的唯一值,并且如果存在唯一值,则可以继续并通知用户。然后使用新提取的列表更新缓存中的初始列表。 –

+0

我想事先提取清单将是最简单的解决方案。但是,这会消除设备进入时实时检查带来的额外好处。 –

回答

0

一如既往,这取决于。假设列表很短,变种3听起来相当简单,对服务器的要求最低。

如果列表不经常改变,它可能被缓存在客户端为了节省带宽(服务器只是说没有修改)。你也可以做增量更新,但现在这是一个过早的优化。


变体2是一种变体1的特例,因为检查单个项目是检查列表的特例。当/claims列表很大或变化很大时,这是有道理的。在服务器端,我只会实现检查列表。然后,客户端会检查所有尚未检查的项目(通常只是最近扫描的项目)。