文档教程持久化

持久化 Loro 文档的最佳实践

最简单的做法是在导入和导出时都使用完整快照,流程如下:

  1. 加载文档时导入整个快照。
  2. 保存更改时导出完整快照。
  3. 使用防抖或节流,在累计一定次数编辑后触发快照保存。

这种方式便于搭建初期的应用,但缺点是用户的编辑不会立即保存。下面介绍如何在减少资源消耗的前提下,快速保存每次编辑。

兼顾即时保存与资源效率

要同时实现快速保存与资源高效,可按以下策略:

  • 使用快照编码定期存储完整文档。
  • 使用更新编码频繁导出增量(例如每次按键后防抖/节流导出),并将这些二进制数据写入磁盘或键值数据库等快速存储,从而以较低成本实现快速保存。
  • 加载文档时,先导入快照再导入所有相关增量,即可恢复最新状态。
  • 导入完成后导出新的快照替换旧快照,并清理已导入的增量,以加快下一次加载。
  • 如果 LoroDoc 体量庞大且旧历史可以安全回收,可使用“浅快照编码”缩小快照体积;在此之前的历史可归档到冷存储中。

在协作场景下,快照或增量导出的二进制数据可以通过任意媒介传输,例如 WebRTC、WebSocket 或 HTTP。

CRDT 的强最终一致性保证:只要各节点拥有相同的操作集合,就会收敛到一致的文档状态,而无需担心操作到达的顺序、重复或延迟。