HTML5本地存储的最大大小是否包括键名?

9
HTML5的WebStorage中的localStorage的最大大小为5MB。
这是否包括键名?
例如,如果我使用键名"quite-a-long-key-name-and-this-is-only-1" 而不是 "key1",那么我会更快地用完空间吗?
在稍微相关的话题上,有没有任何命名localStorage键的事实约定?在使用第三方JS脚本时如何防止命名空间冲突?
2个回答

10

这是否包括键名?

是的,键名也包括在数据中,它们用于标识您存储和稍后检索的数据,因此必须保存。

使用第三方JS脚本时,如何防止名称空间冲突?

这是个好问题,一般我会在localStorage前缀中加上应用程序名称。不过更好的做法是创建一个哈希值,例如某个算法接受一个字符串作为应用程序名称等输入,然后在读取时再次使用它们。


我目前正在选择为我的应用程序(或者说是jQuery插件)名称添加前缀。如果可重复,哈希值将起作用,此时您可以直接使用名称。 - Martijn
@Martijn:是的,我指的是一种不会发生碰撞的唯一哈希,并且可以加密和解密(保存、检索):) 不过这是另一个话题。 - Blaster

6
请注意,这取决于实现方式,因为规范没有给出限制。因此,您不应该依赖大小。
其次,是的,当今浏览器中的限制包括名称:这是存储空间("磁盘空间")的大小。
为了避免冲突,我使用命名空间(例如myplugin.mypart.myval)。5 MB对于可以随时删除或不可用的存储来说已经很大了,所以我从未考虑过减小键的大小...

那么如果可能的话,使用少量的键并合并数据会更有益吗? - Martijn
如果你真的需要最大化空间利用,那么是的。但要小心,在浏览器中使用非受控空间存在固有限制,可能会被替换或更糟(大多数人都有不止一个浏览器)。 - Denys Séguret
1
这并不是为了最小化我的存储空间占用,而是为了最大化其他JS脚本可用的空间。5MB是相当大的空间...除非每个JS脚本都开始将5MB视为“相当大的空间”。 - Martijn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接