gpt4 book ai didi

javascript - 将 JavaScript 中的大字符串与散列进行比较

转载 作者:可可西里 更新时间:2023-11-01 02:16:30 24 4
gpt4 key购买 nike

我有一个带有文本区域的表单,其中可以包含大量使用第三方富文本编辑器之一编辑的内容(例如,博客文章)。我正在尝试实现类似自动保存功能的功能,如果内容发生更改,它应该通过 ajax 提交内容。但是,我必须解决这样一个事实,即我拥有的一些编辑器选项不支持“isdirty”标志或“onchange”事件,我可以使用它来查看自上次保存以来内容是否发生了变化。

因此,作为一种解决方法,我想做的是在变量中保留一份内容副本(我们称之为 lastSaveContent),截至上次保存,并在“自动保存”时将其与当前文本进行比较"函数触发(在计时器上)以查看它是否不同。但是,我担心非常大的文档会占用多少内存。

在 lastSaveContent 变量中存储某种散列而不是整个字符串,然后比较散列值是否更有效?如果是这样,你能推荐一个很好的 javascript 库/jquery 插件来实现这个要求的适当散列吗?

最佳答案

简而言之,您最好只存储和比较这两个字符串。


计算适当的散列值并不便宜。例如,查看 pseudo codeactual JavaScript implementation用于计算字符串的 MD5 散列。此外,所有正确的散列实现都需要枚举字符串的字符。

此外,在现代计算的上下文中,一个字符串必须是真的真的很长,然后才能将它与另一个字符串进行比较慢。您在这里所做的实际上是微优化。内存不会成为问题,比较两个字符串的 CPU 周期也不会成为问题。

对于所有优化案例:检查实际上是一个问题,然后再解决它。在我做的一个快速测试中,计算和比较 2 个 MD5 总和花费了 382 毫秒。直接比较两个字符串用了0ms。这是使用一个 10000 字长的字符串。参见 http://jsfiddle.net/DjM8S .

如果您真的认为这是一个问题,我也会强烈考虑使用穷人比较;并且只是比较 2 个字符串的长度,看看它们是否发生了变化,而不是实际的字符串比较。

关于javascript - 将 JavaScript 中的大字符串与散列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2502659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com