0

我们有一个网络应用程序,它使用 Mahout 和 CF 过滤来生成产品推荐,基于用户为项目分配评级。

有一个 iOS 应用程序通过 REST API 与 webapp 通信,让用户滚动浏览项目,并为它们分配评级。

iOS 应用程序将从 webapp 中提取排名产品列表 - 这是显示给用户的列表。当用户滚动到最后时,我们请求列表的更下方。

还要求 iOS 应用程序不向用户显示他们以前在该特定设备上看到的产品。

我的问题是 - 我们应该如何处理最后一个要求?

每个 iOS 客户端是否应该维护他们以前看到的内容的列表,并简单地将这些从它从服务器中提取的列表中删除?

或者服务器应该为每个客户端维护一个状态,并在发送之前将它们从列表中删除?

您可以看到这两种方法的优缺点是什么?

干杯,维克多

4

1 回答 1

0

首先,如果要求是不在任何设备/平台上显示他们以前见过的用户产品(例如,如果他们在他们的 iphone 上使用该应用程序,然后是 ipad/ipod),那么你肯定必须在服务器端进行(因为应用程序无法知道用户在其他设备上看到了什么,除非您将其存储在服务器上)。

假设这是一个特定于设备的要求,我认为您的目标是最大限度地减少(可能不可靠或缓慢)网络流量以优化 iPhone 体验。与服务器来回同步需要额外的网络流量,有时可能会失败。这将导致客户端存储的结论。除非您的用户将看到大量会占用磁盘空间的产品,但我假设您为每个用户存储的数据量是名义上的。

于 2013-09-12T01:52:29.263 回答