从 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 密码?