如何同步HTML5本地/网络存储和服务器端存储?

35

可能重复:
最佳方法:如何在本地HTML5数据库(WebSQL存储,SQLite)和(多个)服务器存储之间实现自动双向同步?

我正在寻找解决方案,可以透明、自动地在客户端 HTML5 localStorage 或 Web 存储和(可能是多个)服务端存储之间进行同步和复制(唯一的要求是应该简单且能够在常规托管服务上负担得起)。

所以您是否有使用过这样的库/技术,并提供数据存储,自动执行客户端-服务器存储同步,使数据在线或离线都可用?我认为这是支持离线模式的 web 应用程序中相当常见的情况...


单个服务器和客户端的同步问题已经很困难了,但如果考虑到多个客户端(桌面/移动)和多个服务器,那就更加困难了。话虽如此,我非常想知道您是否发现了任何库、解决方案或基本思路来解决这个问题。干杯! - Anurag
4个回答

10

Firebase 提供此功能作为一项服务。 另一个选择是Parse


5
这取决于你想要什么。这里有一个很好的教程可以帮助你入门:http://hacks.mozilla.org/2010/01/offline-web-applications/ 除非你要做一些复杂的东西,否则你不需要太多框架来为你完成它。我猜你可以使用jQuery在客户端节省几行代码。基本上,你想在你的存储中保留一个记录,即最后一次更改存储的时间,最后一次更新服务器的时间,并将localStorage变量编码为JSON并通过XHR发送(或者只发送你要发送的本地存储位)。然后,在服务器上,你可以解码JSON并处理它,或者只是使用PHP的serialize将其转储到数据库中。
如果你有特别的需求,请提出来。

感谢这篇精彩的文章!它很好地演示了相关API的原理和用法。然而,它只展示了一个非常特定子案例的手动解决方案。正如Anurag所说,当并发、双向同步、错误处理等问题出现时,事情很快就变得复杂起来。这就是为什么我正在寻找一种更可管理的方式。 - thSoft
数据同步的更详细文章:http://www.ibm.com/developerworks/library/wa-html5db/index.html - Julien Kronegg

2

7
你已经积累了个人经验吗? - user2134555
我最终根据backbone.js编写了自己的解决方案。 - TinkerTank
你把它开源了吗?你能和我们分享一下吗? - user2134555
这不是通用的。如果你想要实现远程到本地同步,看看backbone.js吧。如果你的服务器通过REST API暴露数据(越“纯”的越好),它可能会满足你的需求。 - TinkerTank
TumbleCow,你能在Git上发布你的代码吗? - Usama Khalil

1
我刚刚发现了一个非常新的框架,它正好可以实现这个功能:Impel.inTouch。它的模式定义似乎有点不方便,但绝对值得一试。

具有讽刺意味的是,我在发放悬赏之后不久就找到了这个答案。 :D - thSoft
不幸的是,Impel已经不再得到支持——现有的内容只适用于MooTools。 - PhillipKregg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接