【问题标题】:When to call the backend and when to store locally (angularjs)何时调用后端以及何时在本地存储(angularjs)
【发布时间】:2015-07-22 13:32:28
【问题描述】:

我有一个 ionic 应用程序和一个 Parse.com 后端。我的用户可以对锻炼程序执行 CRUD 功能,更改程序的各个方面,包括添加、删除、编辑其中的练习。

我对何时保存、何时调用服务器以及服务中可以保存多少数据/$rootScope感到困惑?

典型的用户流程如下:

  1. 创建程序和客户端(在服务器上创建并将数据存储在$localStorage)。
  2. 用户进入编辑屏幕,他们可以在其中对程序中的所有练习执行 CRUD 功能。目前,我对每个函数执行服务器调用,以便将其同步到备份。
  3. 用户可以返回并选择不同的程序 - 下载数据并再次将其存储在 localStorage。

我的问题是如何确保我的用户数据始终保存到服务器并为他们提供响应迅速的用户体验。

有一个定时触发保存的超时功能是正常的吗?在移动设备上,由于连接不佳,对服务器的调用量非常痛苦。

欢迎任何关于与 Ionic 和 Parse.com 完全本地/远程同步的想法。

【问题讨论】:

  • 回调怎么样?

标签: javascript angularjs parse-platform server


【解决方案1】:

根据我的经验,最好的方法如下:

  • localStorage 本质上是一个缓存层,如果它是最新的,那就太好了,因为它可以减少网络调用。但是它仅限于当前会话,应被视为易失性存储。

  • 您的服务器是您的真实来源,因此应始终更新。

这意味着,对于读取,localstorage 非常棒,如果数据没有更改,您不需要获取一百万次数据。对于写入,请始终信任您的服务器以进行长期存储。

我建议的模式是,在加载时,获取任何相关数据并将其保存到本地存储。任何进一步的读取都应该来自本地存储。编辑,应该直接转到服务器,成功后,您可以将这些更改写入本地存储。这样,如果您在保存时出错,可以通知用户,和/或您可以使用 localstorage 作为队列继续尝试将数据发布到服务器,直到完全成功。

【讨论】:

    【解决方案2】:

    这称为“离线同步”或有时称为“4 路数据绑定”。关键是在本地缓存数据并将其与远程后端同步。这是一个非常普遍的需求,但不幸的是,解决方案并不那么普遍......理想的流程将遵循这一理念:

    • 在本地保存数据
    • 尝试将其与服务器同步(执行自动合并

    • 定期同步,还有一个计时器,也许还有一些“连接恢复”事件

    这很难手动实现。如果长时间搜索模块,而我想到的唯一模块并不真正满足您的需求(因为它们通常是为您提供前端连接器的后端提供商;而且您已经有一个自以为是的后端),但在这里他们无论如何:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2018-01-15
      • 2013-08-17
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多