Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以良好的性能更新已修改的字符串_Javascript_String_Performance - Fatal编程技术网

Javascript 如何以良好的性能更新已修改的字符串

Javascript 如何以良好的性能更新已修改的字符串,javascript,string,performance,Javascript,String,Performance,我正在创建一个可以由多个用户同时修改的文档。为了简化文档,可以将其视为字符串。在进行修改时,整个字符串被发送到所有客户机,并用新的字符串替换其版本。就通过网络发送的数据量而言,这对于大字符串来说是非常沉重的。所以我想发送尽可能少的信息,即使这意味着客户端需要更多的工作 我正在使用javascript,但这并不重要 首先,我将字符串保存为变量“oldstring”,修改后,我得到了变量“newstring”。我发送变量“message”(此时等于“newstring”)。“消息”由所有客户端接收,

我正在创建一个可以由多个用户同时修改的文档。为了简化文档,可以将其视为字符串。在进行修改时,整个字符串被发送到所有客户机,并用新的字符串替换其版本。就通过网络发送的数据量而言,这对于大字符串来说是非常沉重的。所以我想发送尽可能少的信息,即使这意味着客户端需要更多的工作

我正在使用javascript,但这并不重要

首先,我将字符串保存为变量“oldstring”,修改后,我得到了变量“newstring”。我发送变量“message”(此时等于“newstring”)。“消息”由所有客户端接收,并使用它更新其“旧字符串”


非常感谢您的帮助。:)

您可以使用来实现这一点。它有Python、C++、java、LUA、Objic C和JavaScript的绑定。您可以将原始版本下载到客户端,在服务器端生成修补程序列表(您希望跟踪哪个客户端有哪个版本,以了解您的起点是什么;这可以在客户端或服务器上完成),将客户端本地版本的修补程序拉到客户端的最新版本,并使用客户端库应用修补程序。在中获得更改后,您可能希望更新该客户端修订跟踪号

为了完整起见,我加入了一个实现示例。我对这个库的工作情况印象深刻,并打算将它保留在我的工具带中

// C# server-side code
DiffMatchPatch.diff_match_patch differ = new DiffMatchPatch.diff_match_patch();
// I'm using literals, you'd pull these from a DB, etc.
var results = differ.patch_make("ABCDEFG", "ABCDEFQ");
var serializedResults = differ.patch_toText(results);
// Send serializedResults to client...
在客户端:

// Javascript client-side code
var patcher = new diff_match_patch();
// The below literal is what *would* be sent
var patches = patcher.patch_fromText("@@ -3,5 +3,5 @@\n CDEF\n-G\n+Q\n");
var results = patcher.patch_apply(patches, 'ABCDEFG');
alert(results);