V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
daijinming
V2EX  ›  程序员

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

  •  
  •   daijinming · Dec 4, 2018 · 11935 views
    This topic created in 2713 days ago, the information mentioned may be changed or developed.

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

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

    以上可能有错误的地方,欢迎指正。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5471 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 08:59 · PVG 16:59 · LAX 01:59 · JFK 04:59
    ♥ Do have faith in what you're doing.