localStorage使用优化

时间:2016-04-09 16:10:12

标签: javascript html5 local-storage javascript-objects

在一个简单的Todo应用程序中,假设我们有一个todo列表数组,应该存储在localStorage中。

var todoList=[{id:1,text:'todo1'},{id:2,text:'todo2'}]

要将数组存储在locaStorage中,必须对其进行字符串化,并将其存储为Object键值。

问题是,假设我有一个包含10000个项目的待办事项数组,每次存储数组时是否必须对整个数组进行字符串化?有没有这种方法只存储更改,并将其与当前项目合并?

我尝试过直接修改localStorage项目,如:

//this will replace last occurence of ] with new stringified object + ]
localStorage.todos.(/]$/, "new stringified object"+']')

但它并没有修改localStorage中的原始对象,换句话说,你只能使用setItem()方法设置localStorage项。

1 个答案:

答案 0 :(得分:1)

最好只将localStorage视为持久性机制,理想情况下不是保留您正在积极处理的数据的地方。在幕后,它只是一个键/值存储,其值始终是一个字符串,因此字符串化整个值是不可避免的。

坦率地说,对10,000个项目进行字符串化的性能影响可以忽略不计(An O(n)操作),所以无论如何我都不会担心它,但如果你想挤压每一个最后一点性能超出了你的应用程序,那么我只会在必要时保留你的数据,而不是在每次修改之后。使用内存中的副本处理您的待办事项列表,然后在完成后对其进行字符串化。