从 REST 服务更新 localStorage,但只更新新记录

Posted

技术标签:

【中文标题】从 REST 服务更新 localStorage,但只更新新记录【英文标题】:Update localStorage from REST services, but only new records 【发布时间】:2015-02-15 20:36:05 【问题描述】:

我的移动应用中有一项服务,它可以使用刷新选项从远程服务器更新记录。此服务执行后,会将数据保存到 localStorage。这可以正常工作并节省用户不必要地使用带宽。但是,本地数据将被修改并具有一些额外的字段,包括可以在应用程序中设置的布尔“收藏夹”选项。

有没有办法从 REST 服务器只下载新的或更改的记录?我想确保本地数据不只是被覆盖。不一定要寻找代码,只是处理这个问题的模式会很棒。我想避免使用 javascript 的 map 函数,因为它看起来很笨重,但也许没有其他办法......

非常感谢,

维特纳

【问题讨论】:

【参考方案1】:

是的,这是可能的。但它只有在多个客户端可以更改相同数据(移动应用程序 + 网站)时才有用。

要知道哪些记录是新的或更改的,您可以仅传输和比较上次更改的 IDs + md5 + 日期/时间(微秒)

简单同步的伪逻辑:

客户端:获取所有 ID、日期和本地存储中数据的计算 md5 客户端:将此信息发送到服务器 服务器:将 ID、日期和 md5 与服务器数据进行比较 服务器:收集更改的数据 服务器:向客户端发送数据 客户端:修改localStorage中的数据

如果客户端上的数据发生变化(移动应用) 直接将数据发送到服务器

【讨论】:

问题是,我无法控制 REST 服务器(尽管我可以控制测试)。这将是会更改的公共数据,但我将无法更改远程代码。但是,您关于确保满足不同客户的建议提出了另一点。我可能需要一个远程资源,其中包含始终与应用程序保持同步的已更改数据子集...

以上是关于从 REST 服务更新 localStorage,但只更新新记录的主要内容,如果未能解决你的问题,请参考以下文章

显示来自 localStorage 缓存的数据,然后使用来自服务的 AJAX 结果进行更新

如何从 REST API(PUT 方法)更新 Keycloak 密码?

如何在 Sencha Touch 中的商店之间同步

通过部分 json 更新 REST API

如何使用 Django REST Framework 实现实时更新?

调用REST API方法以更新本地管理员密码