我有一个带有文本区域的表单,其中可以包含使用多个第三方富文本编辑器之一编辑的大量内容(例如博客文章)。我正在尝试实现类似自动保存功能的功能,如果内容发生更改,它应该通过ajax 提交内容。然而,我必须解决这样一个事实:我作为选项的一些编辑器不支持“isdirty”标志或“onchange”事件,我可以使用它来查看自上次保存以来内容是否已更改。
因此,作为一种解决方法,我想做的是将上次保存时的内容副本保留在变量中(我们称之为lastSaveContent),并在“自动保存”函数触发时将其与当前文本进行比较(在计时器上)看看是否有不同。但是,我担心非常大的文档会占用多少内存。
在lastSaveContent变量中存储某种哈希而不是整个字符串,然后比较哈希值会更有效吗?如果是这样,您能推荐一个好的 javascript 库/jquery 插件来实现此要求的适当哈希吗?
简而言之,您最好只存储和比较两个字符串。
计算正确的哈希值是not便宜的。例如,查看伪代码 http://en.wikipedia.org/wiki/MD5#Pseudocode or an 实际的 JavaScript 实现 http://phpjs.org/functions/md5/用于计算字符串的 MD5 哈希值。此外,所有proper无论如何,哈希实现都需要枚举字符串的字符。
此外,在现代计算的背景下,字符串必须是really, really在将其与另一个字符串进行比较之前很久很慢。您在这里所做的实际上是微观优化。内存不会成为问题,比较两个字符串的 CPU 周期也不会成为问题。
与所有优化案例一样:check这是actually在解决问题之前。在我进行的快速测试中,计算和比较 2 个 MD5 和花费了 382 毫秒。直接比较两个字符串花费了0ms。这是使用 10000 个单词长的字符串。看http://jsfiddle.net/DjM8S http://jsfiddle.net/DjM8S.
If you really认为这是一个问题,我也会强烈考虑使用穷人的比较;只是比较两个字符串的长度,看看它们是否改变,而不是实际的字符串比较。
.
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)