【问题标题】:how to update retrieved data in the front-end when data is updated in the database?当数据库中的数据更新时,如何在前端更新检索到的数据?
【发布时间】:2018-06-24 21:47:36
【问题描述】:
我正在构建一个移动应用程序,其中 UI 上的下拉手势会启动现有数据/帖子的更新(如果有的话,还会检索新帖子,但这不是重点)。服务器是无状态的,这意味着没有会话。
如果数据库中的帖子已经更新了,如何让前端知道哪些帖子需要更新?我能想到的唯一方法是将所有检索到的帖子的 id 列表发送到服务器,并让它检查自获取时间以来是否有任何帖子被修改。
然而,这似乎非常低效,因为在某些极端情况下,用户可能已经堆积了数百个帖子,而且很可能只需要更新很少或不需要更新的帖子。发出数百个数据库请求可能会产生巨大的开销。
【问题讨论】:
标签:
mysql
rest
mobile
lamp
【解决方案1】:
至少有两种方法可以做到这一点
-
长轮询
- 客户端向服务器请求新信息。
- 服务器保持连接打开,直到有一些新数据要发送。
- 服务器获取数据后,将其发送给客户端并关闭连接。
- 然后客户端发送一个新的信息请求。
- 这是一个持续的过程。
-
WebSocket
- 创建一个 websocket 连接,保持打开状态。
- 服务器会在更新到来时推送它们。
两种情况都有问题
- 可能需要大量时间才能实现生产就绪。
- 它们都需要服务器知道数据库中的任何变化。这也很棘手