我有一个 Web 应用程序,客户端编辑器正在编辑服务器端已知的非常非常大的文本。
客户可以对此文本进行任何类型的修改。
以服务器理解的方式传输结果差异的最网络效率方法是什么?此外,由于这将发生在客户端 (Javascript),我也希望它“快”(或至少不会明显慢)
一些场景:
- 用户修改了一个字符
- 用户在随机位置修改了几个句子
- 用户删除所有内容并生成空白文本。
我不能使用类似 diff 的语法,因为它不是网络高效的,它会检查行,其中示例 1 和 3 会产生可怕的差异(尤其是最后一个,结果将比旧的本身更多)。
谁有这方面的经验?用户操作的数据集非常大 - 大约 3-5MB 的文本,上传整个"new"内容是一个很大的禁忌。
需要说明的是,我正在寻找传输“协议(protocol)”,字符串比较不是问题。
最佳答案
我对这个主题不是很熟悉,但我可以为您指出一个可能非常有用的开源项目(Apache 许可证 2.0)。
这是一个由 Google 工程师用多种语言(包括 JavaScript)编写的 Diff、Match 和 Patch 库,用于多种在线协作编辑服务。
这是资源列表:
- Diff, Match and Patch项目
- MobWrite项目(Editor基于上述项目实现)
- "Differential Synchronization" (工程师的 Google 技术讲座)
关于javascript - Javascript 中两个字符串之间的网络效率差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576050/