localStorage 据说有大小限制,不知道指的是每条记录还是总体大小限制

2018-12-04 15:18:28 +08:00
 daijinming

localStorage 据说有大小限制,不知道指的是每条记录还是总体大小限制,查了网上的很多资料,也没有搞清楚这个问题

11201 次点击
所在节点    程序员
19 条回复
des
2018-12-04 15:26:30 +08:00
如果我没记错的话,是总体 4M
fe619742721
2018-12-04 15:27:41 +08:00
总体,5M,不同浏览器不同标准,网上有测试极限代码
janxin
2018-12-04 15:29:18 +08:00
每个浏览器不同,很多浏览器的早期版本都还没限制...
lauix
2018-12-04 15:35:38 +08:00
4M, 数据量大 可以采用 indexDB
daijinming
2018-12-04 15:41:39 +08:00
我之前开发的一个笔记本 https://notepad2.cn 就是采用 localStorage ,现在考虑换成 indexDB,但是测试了编写难度比 localStorage 麻烦很多
learnshare
2018-12-04 15:47:24 +08:00
yangehappy
2018-12-04 15:55:07 +08:00
总体大小 各家的浏览器实现都不一样 所以大小会有差别
a191243108
2018-12-04 15:59:55 +08:00
文档说最大 5M,不过不同浏览器有差异。indexDB 可以用哦。
daijinming
2018-12-04 16:34:24 +08:00
https://arty.name/localstorage.html 测试了一下,火狐和谷歌支持 520 万字符,IE 支持 9900 万字符
daijinming
2018-12-04 16:47:11 +08:00
@a191243108 @des @fe619742721 @janxin @lauix @learnshare @yangehappy 大家觉得 websql 怎么样,我觉得这个比 indexDB 简单
a191243108
2018-12-04 16:51:46 +08:00
@daijinming indexDB 兼容性更好(虽然 w3c 说废弃),当初我看过 websql,对比过。我用在移动端。至今没报问题,PC 没用过。你查文档一下吧。移动的话,我推荐 indexDB
zeromake
2018-12-04 17:39:50 +08:00
@daijinming #10
直接用个包装库不就好了 [localForage]( https://github.com/localForage/localForage) 支持
1. indexedDB
2. WebSQL
3. localStorage
daijinming
2018-12-04 17:51:45 +08:00
@zeromake 非常感谢,再也不用纠结了
vx2e
2018-12-04 17:55:30 +08:00
indexDB 不是被废弃的,websql 才是被废弃的,indexDB 是代替 websql 的,楼上有个哥们搞错了。
sxlzll
2018-12-04 17:59:06 +08:00
always catch the possible exceptions from setItem()
litpen
2018-12-04 18:01:01 +08:00
不同的浏览器有不同的限制,所以没有明确的大小限制
linchengzzz
2018-12-04 18:12:50 +08:00
indexDB 可以,sw.js 也是 indexDB
lauix
2018-12-04 18:37:38 +08:00
@daijinming websql 被废弃了,只有 indexdb 了
githua
2018-12-04 21:10:31 +08:00
@daijinming
一般 pc 浏览器和小米自带浏览器的 localStorage 和 sessionStorage 都是 5242880 字符( String.length 相加计算)。
苹果的 safari localStorage 为 2621440 字符,sessionStorage 大量写入会触发错误。

我特地写了一个测试页面: https://www.githua.com/tool/local_storage.html

有些网站测试出来的不是整整的 5242880 ( 5120x1024 ),而是 5101k 之类的,我猜测应该是没把 key 算上,上面这个测试页面统计包含 key 的长度,所以很整齐,刚好 5120*1024,由此可知 key 也是算容量的。

关于单位问题,单位是字符,可以是中文或英文字母,一个中文等同一个英文字母。所以有些地方说是容量是 10M,也不能算错。因为 js 用 utf-16,所以中文英文一个字符都是是 2 个字节,10M 指的是字节数。

以上可能有错误的地方,欢迎指正。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX