use*_*342 11 javascript string hash
我有一个带有textarea的表单,可以包含使用众多第三方富文本编辑器之一编辑的大量内容(例如,博客文章).我正在尝试实现类似自动保存功能的东西,如果它被更改,它应该通过ajax提交内容.但是,我必须解决这样一个事实:我作为选项的一些编辑器不支持"isdirty"标志,或者"onchange"事件,我可以用它来查看自上次保存以来内容是否已更改.
因此,作为一种解决方法,我想要做的是将内容的副本保存在变量中(让我们称之为lastSaveContent),从最后一次保存开始,并在"自动保存"功能触发时将其与当前文本进行比较(在计时器上)看它是否不同.但是,我担心可能会占用大量文档的内存量.
在lastSaveContent变量中存储某种散列而不是整个字符串,然后比较散列值会更有效吗?如果是这样,你能推荐一个好的javascript库/ jquery插件,为这个要求实现适当的哈希吗?
Mat*_*att 21
简而言之,您最好只存储和比较两个字符串.
计算适当的哈希并不便宜.例如,查看伪代码或用于计算字符串的MD5哈希的实际JavaScript实现.此外,所有正确的哈希实现都需要枚举字符串的字符.
此外,在现代计算的背景下,一个字符串必须是真的,真的很长的比较它与另一个字符串之前是缓慢的.你在这里做的实际上是微观优化.内存不会成为问题,CPU也不会循环比较两个字符串.
与所有优化案例一样:在解决之前检查这确实是一个问题.在我做的快速测试中,计算和比较2个MD5总和需要382ms.直接比较两个字符串需要0ms.这是使用10000字长的字符串.见http://jsfiddle.net/DjM8S.
如果你真的认为这是一个问题,我也会强烈考虑使用穷人比较; 并且只是比较2个字符串的长度,看它们是否已经改变,而不是实际的字符串比较.
..
| 归档时间: |
|
| 查看次数: |
6323 次 |
| 最近记录: |