2012-09-23 48 views
0

我正在寻找一种方法来缓存尽可能多的数据在我的应用程序。大部分这些数据都是对以下步骤至关重要的项目,如朋友列表。根据所选择的朋友,我会显示一个列表中的某些项目,并可以发送一些东西给这位朋友。缓存的朋友/物品列表

我想缓存好友列表。以这种方式,不可能将某些东西发送给不存在的朋友,这显然会导致错误。或者,也许缓存可以工作,以便它显示一个“无效的缓存的朋友”的消息,并刷新后... ...?

朋友列表不会变化很频繁,但用户使用该应用程序时仍然可以更改。

我也想缓存可以发送给用户的项目。这些也不会非常频繁地改变,但是用户不发送不存在的项目是非常重要的,并且当他们看到最新的项目时(如果它们在服务器侧更新的话)当然是可取的。例如,像缓存可以被购买的物品一样,这个原理也是如此。用户不要尝试使用无效项目完成交易至关重要。

我已经做了一些研究,但只能拿出一个粗略的想法至今:

比较使用散列或时间戳数据:在这种情况下,我不知道在这一点做呢?加载屏幕可能没有任何意义,因为用户不得不等待服务器的响应。也许是后台进程?但是我多久运行一次?我如何同步?

此外,我可以添加一个更新菜单项,以便用户可以确保数据更新。但它仍然不能解决用户可以尝试使用无效数据完成交易的问题(如果他们不按下按钮)。

我还发现了一些关于“实时数据”和AVI的信息,但我认为这不适用于我的情况,我的数据很少会改变,但它要求它是有效的,因为它不仅是信息数据,它是交易确定数据。

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

回答

0

我认为你是对的,你应该检查数据源(服务器)的时间戳。

如果这是朋友之间的点对点交换,就在发送数据之前,从服务器请求其时间戳。没有那么多的数据,通常接近实时。但发送过时数据的可能性仍然很小 - 更新后只有“一纳秒”。

如果它是通过服务器(为什么不呢?),作为奖励,您将通过检查服务器上的时间戳并取消交易(如果发送的数据已过时)来进行乐观锁定。