gpt4 book ai didi

javascript - 离线 HTML5 PouchDB 应用程序。多个选项卡会损坏用户数据。如何预防

转载 作者:行者123 更新时间:2023-12-03 10:47:03 27 4
gpt4 key购买 nike

此问题涉及 HTML5 离线应用程序。 This answer是 2009 年关于常规网页的内容。

我有一个重量级的 HTML5 PouchDB 离线应用程序。这是一个 AngularJS 应用程序,可以向 PouchDB 写入数据或从 PouchDB 写入数据。

应用程序需要在没有服务器帮助的情况下处理多个选项卡。

如果用户在两个选项卡中打开我的应用,他们将创建竞争条件。

1. tab1 opens docA and edits
2. tab2 opens docA and edits
3. tab1 saves docA
4. tab2 saves docA (overwriting tab1's changes)

我的应用需要优雅地处理这个问题,但是如何处理呢?

一些想法:

  1. 防止同一应用出现多个选项卡。
    • 我还没有找到合适的解决方案。
  2. onChange 获取来自 PouchDB 的更改通知
    • onChange 会在另一个选项卡中触发吗?
    • 这并不能解决问题,只会更快地暴露问题。
  3. 为每个选项卡使用不同的 PouchDB,并在它们之间同步。
    • 并不能解决问题,只会造成同步问题。
    • 看起来内存很大。
  4. 文档锁定
    • 复杂onBeforeUnload
    • 如何从无法正确卸载的选项卡崩溃中恢复?
  5. 浏览器选项卡 IPC。
    • 打开文档时,询问其他选项卡是否已打开该文档。
    • 我发现的最好的是 using localStorage
  6. 我还没有想到的事情。

有什么建议吗?

最佳答案

这很奇怪,我以为 IndexedDB 会在幕后自动处理这个问题。您正在使用 IndexedDB,是吗?您是在许多浏览器中看到这种情况,还是仅在 Chrome 中看到这种情况?

理想情况下,这不会是您在应用程序代码中修复的问题;它将由 PouchDB 或 IndexedDB/WebSQL 的浏览器实现处理。如果您有可重现的测试用例,最好在 PouchDB 上提出问题。 :)

关于javascript - 离线 HTML5 PouchDB 应用程序。多个选项卡会损坏用户数据。如何预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com