![]() |
1
3
google diffmatchpatch有一个javascript实现,我使用它非常成功。 |
![]() |
2
1
蟒蛇 difflib 模块执行此操作及更多操作。它非常灵活,但移植到JavaScript可能很困难。 关于您的更新,我首先想知道为什么您需要担心带宽。除非您的用户正在键入 许多 把文本输入编辑框(这有它自己的可用性问题),那么就没有那么多字节可以发送了。每次自动保存时都发送整个文本框。用户打字的速度不足以真正注意到带宽的使用。 或者,你可以在中途见面。每次自动保存时,检查用户是否只有 补充 新文本到结尾的时间与上次相比。如果是这样,只发送一个“append”类型的更新。如果用户返回并编辑了其他任何内容,则在发送整个文本的位置发送“替换”类型更新。这将处理常见的仅追加的情况,而不会严重地使实现复杂化。 |
![]() |
3
0
而不是计算两个文本之间的差异,这是困难的, 当人们在编辑时,您总是可以在文本框中记录击键和插入符号位置。如果您不时地发送这个消息(并清理缓冲区),服务器就可以播放完全相同的序列。 |
![]() |
4
0
这段代码有点过早优化的味道。也许您应该先实现您的解决方案,然后 然后 请参阅有关使用diff优化传输速率的信息。你看了多少文字?因为请求和响应数据包的大小或多或少相同,而您的消息只有几个字节的差异,所以节省的空间可能非常小。 至少,在没有优化的情况下完成您的解决方案,并使用Firebug等工具分析网络流量,然后测试性能,看看您认为可以发送的最大文本块的性能有多差。 最后,你可以一直使用 TypeWatch JQuery plugin 在文本框中侦听更改事件。您可以设置一个延迟,这样一旦用户完成键入,并且延迟结束,就会触发回调函数。这意味着只有当用户键入内容时,文本才会被发送,并且只有当他们完成键入时。这将比重复轮询服务器效率显著提高。 |
![]() |
5
0
取决于你准备走多远。 您想检查deltav算法,它被SVN特别使用: http://svn.apache.org/repos/asf/subversion/trunk/notes/svndiff |
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 6 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 10 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 10 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 10 月前 |