HTML5本地存储stringify并存储EACH对象引用

时间:2011-05-11 03:06:28

标签: javascript json html5 local-storage

使用以下JSON:

var myObj = {name: 'my obj', does: 'nothing'};
var myObjArr = [myObj, myObj, myObj];

将myObjArr存储到本地存储时,myObj JSON会被使用3次,占用存储空间的3倍,即:

"[{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"},{"name":"my obj","does":"nothing"}]"

显然,这会带来可扩展性问题。任何人都可以推荐最佳解决方案到目前为止,我不得不求助于使用ID,即关系数据库。

var objects = {0: {name: 'my obj', does: 'nothing'}};
var myObjArr = [{obj: 0}, {obj: 0}, {obj: 0}];

更新 - 问题是当所有数据最终存储为键/值字符串时,如何在本地存储中表示此层次结构。诉诸关系数据库概念似乎是老派。

1 个答案:

答案 0 :(得分:1)

更合适的技术IndexedDB将被用作对象存储,但许多浏览器还不是supported

编辑:您需要浏览将对象复制到IndexedDB时使用的structured clone algorithm文档 - 看起来每个记录都维护引用,但adding多个记录不会导致每个记录引用在JavaScript内存空间中共享的对象。