4

我即将在 indexeddb 对象存储中存储大量对象。所有对象都具有相同的结构,例如{somekey: xxx, somevalue: yyy}.

对象键的长度是否会影响存储数据的大小?例如,如果我将结构更改为{s: xxxx, v: yyyy},我是否应该期望使用当前浏览器在对象存储中获得更好的足迹?

我在标准的任何地方都找不到有关此的任何信息,所以我想这取决于浏览器的实现是否在内部使用字典,我想了解它目前是如何实现的,以及它是否值得优化减少存储对象键的大小。

4

1 回答 1

1

是的,它会影响它。但至少对于大小合理的键,一个字符与 10 或 20 个字符不会对性能产生任何影响,除非您的规模非常大(数百万条记录)。大多数实现(包括我可以说的chrome)确实存储了包括键名在内的完整对象,但索引只存储“keypath”一次。

这意味着 {"foo": "bar"} 可能需要大约 12 个字节来存储(每个字符串大约 4 个字节加上一些类型信息开销,但是“foo”上的后续索引将只存储“baz”。

{"foobarbaz": "helloworld"} 可能需要大约 23 个字节来存储。真的,我希望在大多数情况下,您自己的数据应该超过密钥长度的开销,并且尝试缩短您的密钥以节省几个字节是过早的优化。

于 2012-09-11T16:11:40.473 回答