[英]Best practise of using localstorage to store a large amount of objects
目前我正在尝试使用localStorage存储大量相同类型的对象,我感到有些困惑。
一种思维方式是将所有对象存储在数组中。 但是对于单个对象的每次读/写,我需要对整个数组进行反序列化/序列化。
另一种方法是将每个对象的密钥直接存储在localStorage中。 这将使访问每个对象变得更容易,但我担心将存储的对象数量(数万)。 此外,获取所有对象将需要迭代整个localStorage!
我想知道哪种方式会更好? 是否值得尝试更复杂的客户端数据库,如PouchDB?
如果你想要一些简单的东西来存储大量的键/值,并且你不想担心这些类型,那么我推荐使用LocalForage 。 您可以存储字符串,数字,数组,对象,Blob,无论您想要什么。 它使用IndexedDB和WebSQL,因此存储限制远高于LocalStorage。
PouchDB也可以工作,但API更复杂,更适合在服务器上与CouchDB同步数据时。
如果您不想拥有很多钥匙,可以:
\\n
concat行JSON并将它们存储为单个键 在这种情况下,解析行只是.split('\\n')
,比JSON.parse
快JSON.parse
数量级。
请注意,您可能需要特别努力同步同时打开的选项卡。 在复杂的情况下,这可能是一个挑战。
localStorage有好的和坏的部分。
好的部分:
JSON.stringify
通常比localStorage.setItem
慢 5-20倍); 坏消息:
这些点显示了localStorage作为数据库的适用性的边界。 LS适用于需要同步性和速度的任务,以及可以修剪DB以适应配额的任务。
因此localStorage适用于缓存和日志。 不多。
我没有亲自使用localStorage来管理这么多元素。
但是,我通常用来管理数据的模式是将完整的信息数据库加载到javascript对象中,在进程期间在内存中管理它,并在进程完成时再次将其保存到localStorage。
当然,根据您的项目规范,这种模式可能不是一个很好的方法来满足您的需求。
如果您需要不断保存数据,数据访问可能会成为一个问题,因此可能使用某种类型的小型数据库访问是一个更好的选择。
如果您的数据量非常高,那么在内存上管理它也可能是一个问题,但是,根据数据模型,您可以将其构建为高效的结构,这样您就可以在需要时加载和保存数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.