localStorage 据说有大小限制,不知道指的是每条记录还是总体大小限制,查了网上的很多资料,也没有搞清楚这个问题
1
des 2018-12-04 15:26:30 +08:00 via Android
如果我没记错的话,是总体 4M
|
2
fe619742721 2018-12-04 15:27:41 +08:00 via iPhone
总体,5M,不同浏览器不同标准,网上有测试极限代码
|
3
janxin 2018-12-04 15:29:18 +08:00
每个浏览器不同,很多浏览器的早期版本都还没限制...
|
4
lauix 2018-12-04 15:35:38 +08:00
4M, 数据量大 可以采用 indexDB
|
5
daijinming OP 我之前开发的一个笔记本 https://notepad2.cn 就是采用 localStorage ,现在考虑换成 indexDB,但是测试了编写难度比 localStorage 麻烦很多
|
6
learnshare 2018-12-04 15:47:24 +08:00
|
7
yangehappy 2018-12-04 15:55:07 +08:00
总体大小 各家的浏览器实现都不一样 所以大小会有差别
|
8
a191243108 2018-12-04 15:59:55 +08:00
文档说最大 5M,不过不同浏览器有差异。indexDB 可以用哦。
|
9
daijinming OP https://arty.name/localstorage.html 测试了一下,火狐和谷歌支持 520 万字符,IE 支持 9900 万字符
|
10
daijinming OP @a191243108 @des @fe619742721 @janxin @lauix @learnshare @yangehappy 大家觉得 websql 怎么样,我觉得这个比 indexDB 简单
|
11
a191243108 2018-12-04 16:51:46 +08:00
@daijinming indexDB 兼容性更好(虽然 w3c 说废弃),当初我看过 websql,对比过。我用在移动端。至今没报问题,PC 没用过。你查文档一下吧。移动的话,我推荐 indexDB
|
12
zeromake 2018-12-04 17:39:50 +08:00
@daijinming #10
直接用个包装库不就好了 [localForage]( https://github.com/localForage/localForage) 支持 1. indexedDB 2. WebSQL 3. localStorage |
13
daijinming OP @zeromake 非常感谢,再也不用纠结了
|
14
vx2e 2018-12-04 17:55:30 +08:00
indexDB 不是被废弃的,websql 才是被废弃的,indexDB 是代替 websql 的,楼上有个哥们搞错了。
|
15
sxlzll 2018-12-04 17:59:06 +08:00
always catch the possible exceptions from setItem()
|
16
litpen 2018-12-04 18:01:01 +08:00
不同的浏览器有不同的限制,所以没有明确的大小限制
|
17
linchengzzz 2018-12-04 18:12:50 +08:00
indexDB 可以,sw.js 也是 indexDB
|
18
lauix 2018-12-04 18:37:38 +08:00
@daijinming websql 被废弃了,只有 indexdb 了
|
19
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 指的是字节数。 以上可能有错误的地方,欢迎指正。 |