localStorage使用优化

localStorage Usage optimization

本文关键字:优化 localStorage      更新时间:2024-03-23

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

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

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

问题是,假设我有一个包含10000个项目的todo数组,那么每次存储该数组时,我是否必须将整个数组字符串化?有没有这样的方法只存储更改,并将其与当前项目合并?

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

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

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

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

坦率地说,字符串化10000个项目的数组对性能的影响是可以忽略不计的(一个O(n)操作),所以我无论如何都不会担心,但如果你想从应用程序中挤出最后一点性能,那么我只会在必要时保留你的数据,而不是在每次修改之后。用内存中的副本操作你的TO-DO列表,然后在完成后将其字符串化。