V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX  ›  程序员

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

  •  
  •   daijinming · 2018-12-04 15:18:28 +08:00 · 10925 次点击
    这是一个创建于 1941 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    以上可能有错误的地方,欢迎指正。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3258 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:53 · PVG 19:53 · LAX 04:53 · JFK 07:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.