目前我正在尝试使用localStorage存储大量相同类型的对象,我感到有些困惑。
一种思维方式是将所有对象存储在数组中。但是,对于每个读取/写入单个对象,我需要对整个数组进行反序列化/序列化。
另一种方法是将每个对象的密钥直接存储在localStorage中。这将使访问每个对象变得更容易,但我担心将存储的对象数量(数万)。此外,获取所有对象将需要迭代整个localStorage!
我想知道哪种方式会更好?此外,是否值得尝试更复杂的客户端数据库,如PouchDB?
答案 0 :(得分:4)
答案 1 :(得分:2)
如果您不想拥有很多按键,可以:
\n
连接JSON并将它们存储为单个键在这种情况下,解析行只是.split('\n')
,比JSON.parse
快〜2个数量级。
请注意,您可能需要特别努力同步同时打开的标签页。在复杂的情况下,这可能是一个挑战。
localStorage有好的和坏的部分。
好的部分:
JSON.stringify
通常是5-20倍更慢比localStorage.setItem
); 坏消息:
这些点显示了localStorage作为数据库的适用性的边界。 LS适用于需要同步性和速度的任务,以及可以修剪DB以适应配额的任务。
因此localStorage适用于缓存和日志。不多了。
答案 2 :(得分:1)
我没有亲自使用localStorage来管理这么多元素。
但是,我通常用来管理数据的模式是将完整的信息数据库加载到javascript对象中,在进程期间在内存中管理它,并在进程完成时再次将其保存到localStorage。
当然,根据您的项目规范,这种模式可能不是您需要的好方法。
如果您需要不断保存数据,数据访问可能会成为一个问题,因此可能使用某种类型的小型数据库访问是一个更好的选择。
如果您的数据量非常高,那么在内存上管理它也可能是一个问题,但是,根据数据模型,您可以将其构建为可以加载和保存的高效结构数据就在需要的时候。