`

如何获得浏览器localStorage的剩余容量

阅读更多
一、如何获取localStorage的剩余容量

在H5大行其道的今天,localStorage(本地存储)对每一个前断攻城师来说都不太陌生。同时localStorage也给我们带来了极大的便利,不用于cookies的小家子气,localStorage的存储量还是很客观的。

由于浏览器的差异性,导致我们需要对localStorage中的内容做出一部分取舍。而根据目前的市场上浏览器对loaclStorage的兼容性来看,最佳的大小是2.5M左右。如何得到localStorage的容量大小,大概接触过localStorage都会遇到的这么一个问题。

localStorage 中存储的是字符串,根据这一条件,我们可以通过取出所有的localStorage的内容,而其长度就是大小。具体代码如下:
(function(){
    if(!window.localStorage) {
        console.log('浏览器不支持localStorage');
    }
    var size = 0;
    for(item in window.localStorage) {
        if(window.localStorage.hasOwnProperty(item)) {
            size += window.localStorage.getItem(item).length;
        }
    }
    console.log('当前localStorage剩余容量为' + (size / 1024).toFixed(2) + 'KB');
})()


二、如何获取localStorage最大容量


通过上面的分析,其实思路基本是一样的,都是通过字符长度来判断。
(function() {
   if(!window.localStorage) {
   console.log('当前浏览器不支持localStorage!')
   }    var test = '0123456789';
   var add = function(num) {
     num += num;
     if(num.length == 10240) {
       test = num;
       return;
     }
     add(num);
   }
   add(test);
   var sum = test;
   var show = setInterval(function(){
      sum += test;
      try {
       window.localStorage.removeItem('test');
       window.localStorage.setItem('test', sum);
       console.log(sum.length / 1024 + 'KB');
      } catch(e) {
       console.log(sum.length / 1024 + 'KB超出最大限制');
       clearInterval(show);
      }
   }, 0.1)
 })()
分享到:
评论

相关推荐

    RN-本地剩余

    LocalStorage则持久化存储数据,即使浏览器关闭,数据也会保留,但容量有限,通常为5MB。而IndexedDB是更复杂的数据存储解决方案,适合存储大量结构化数据,如数据库记录,支持查询操作。 在React Native中,由于不...

    关于前端面试的试题-改.docx

    - sessionStorage只在当前会话下有效,关闭浏览器后数据消失,容量相对较大。 - localStorage长期存储,直到被手动清除,容量较大,且不会随会话结束而消失,常用于存储用户偏好设置等。 2. prototype是对象的原型...

    前端面试大全

    - **容量**:WebStorage 提供了更大的存储空间,相比cookie更适合作为大规模数据的本地存储方案。 - **传输**:WebStorage 存储的数据不会随HTTP请求发送给服务器,减少了带宽消耗。 - **API**:WebStorage 提供...

    页面只能打开一次Cooike如何实现

    在网页设计中,有时我们需要确保某个页面只能被用户打开一次,以避免因...此外,对于现代浏览器,可能需要考虑使用HTML5的LocalStorage或SessionStorage来替代Cookie,因为它们提供了更大的存储容量且不涉及跨域问题。

    scratch少儿编程逻辑思维游戏源码-拽猫跳跃.zip

    scratch少儿编程逻辑思维游戏源码-拽猫跳跃.zip

    scratch少儿编程逻辑思维游戏源码-足球冠军.zip

    scratch少儿编程逻辑思维游戏源码-足球冠军.zip

    病灶分类粒子群算法优化SVM病灶分类【含Matlab源码 1520期】.md

    机器人开发教程&案例&相关项目资源,奖励仅

    实训商业源码-【原创】Scode源码站原创个人单页-毕业设计.zip

    实训商业源码-【原创】Scode源码站原创个人单页-毕业设计.zip

    实训商业源码-【超人】商家联盟V3.3.0原版免授权-毕业设计.zip

    实训商业源码-【超人】商家联盟V3.3.0原版免授权-毕业设计.zip

    基于STM32的高效步进电机控制算法:SpTA与S型曲线的比较与应用

    内容概要:本文详细介绍了基于STM32的步进电机S型曲线和SpTA加减速控制算法。S型曲线算法通过设定启动频率、加速时间、最高速度和加加速频率等参数,实现平滑的加减速控制,适用于高精度控制场合。SpTA算法则以其良好的自适应性和多路电机控制能力著称,尤其适合CPLD/FPGA环境。文中提供了详细的伪代码和实际代码示例,展示了两种算法的具体实现方法和技术细节。此外,文章还讨论了两种算法的实际测试效果和优化技巧,如利用定时器和DMA提高性能,确保电机运行更加稳定和平滑。 适合人群:从事嵌入式系统开发、步进电机控制及相关领域的工程师和技术爱好者。 使用场景及目标:①需要对步进电机进行高效、稳定的加减速控制;②希望深入了解S型曲线和SpTA算法的工作原理及其实现方法;③寻求优化现有控制系统性能的技术方案。 其他说明:文章不仅提供了理论解释,还包括了大量的代码片段和实际测试数据,帮助读者更好地理解和应用这些算法。

    车牌识别APP模板匹配车牌识别(桂贵京粤苏渝)【含Matlab源码 217期】.md

    计算机二级考试试题&参考资料&心得攻略等资源,

    scratch少儿编程逻辑思维游戏源码-钟声.zip

    scratch少儿编程逻辑思维游戏源码-钟声.zip

    scratch少儿编程逻辑思维游戏源码-宇宙混沌.zip

    scratch少儿编程逻辑思维游戏源码-宇宙混沌.zip

    基于几何相位与补偿相位模型的宽带消色差超构透镜设计与实现——以PR Applied论文为例

    内容概要:本文详细介绍了宽带消色差超构透镜的设计与仿真实现,重点探讨了几何相位和补偿相位的协同作用。通过硅纳米柱结构参数的优化,实现了3.7-4.5μm中红外波段的高效聚焦。文中提供了详细的FDTD建模、Matlab相位计算以及Python优化算法的代码片段,展示了如何通过相位叠加模型解决色散问题。实验结果显示,相比单一几何相位设计,色散补偿效果提升了近3倍,聚焦效率达到了68%。 适合人群:从事光学设计、超构材料研究、电磁仿真领域的科研人员和技术开发者。 使用场景及目标:适用于希望深入了解超构透镜设计原理的研究人员,特别是那些关注宽带消色差性能提升的人群。目标是掌握几何相位与补偿相位的联合应用,提高超构透镜在特定波段的聚焦效率。 其他说明:文章不仅提供了理论推导和公式解释,还分享了许多实际操作中的经验和技巧,如参数扫描、优化算法选择、仿真工具配置等。此外,还讨论了波长泛化能力和常见问题的解决方案。

    【vue】Vue3+TS+Vite+pinia+elementPlus电商项目实战.zip

    【vue】Vue3+TS+Vite+pinia+elementPlus电商项目实战.zip

    scratch少儿编程逻辑思维游戏源码-下落忍者.zip

    scratch少儿编程逻辑思维游戏源码-下落忍者.zip

    西门子1200 PLC轴运动控制程序:成熟应用于装路由器壳子的机器,涵盖伺服与电缸控制及PUT GET通讯块,可复用轴控制与报警块,助力西门子轴控制项目学习与实践

    内容概要:本文详细介绍了基于西门子1200 PLC的轴运动控制在海康威视路由器壳子装配机项目中的应用。主要内容涵盖硬件配置、轴控制程序、气缸报警块、PUT/GET块通讯等多个方面。硬件上,使用西门子1200 PLC为核心控制器,控制3个伺服和1个电缸,并与其他PLC通信。软件层面,通过编写轴控制块、气缸报警块和通讯程序实现了对设备的精确控制。文章不仅展示了具体的代码示例,还分享了许多实战经验和优化技巧,如参数动态加载、通讯超时保护、状态机模式报警处理等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对西门子1200 PLC轴运动控制感兴趣的读者。 使用场景及目标:①学习如何使用西门子1200 PLC进行轴运动控制;②掌握轴控制块、气缸报警块和通讯程序的具体实现;③了解工业自动化项目中的常见问题及其解决方案。 其他说明:文章提供了丰富的实战经验和优化技巧,有助于提高读者在实际项目中的开发效率和解决问题的能力。此外,附带的代码示例和详细的注释使得学习更加直观和易懂。

    scratch少儿编程逻辑思维游戏源码-纸片马里奥 激流勇进.zip

    scratch少儿编程逻辑思维游戏源码-纸片马里奥 激流勇进.zip

    XK7130数控铣床工作台及床身设计.rar

    XK7130数控铣床工作台及床身设计.rar

    基于最优线性二次型理论的多智能体系统带外部干扰的最优控制问题研究

    内容概要:本文详细探讨了基于最优线性二次型(LQR)理论的多智能体系统最优控制问题,特别是针对存在外部干扰的情况。文章首先介绍了在无外部干扰条件下,通过性能指标函数优化获得最优分布式控制协议,并展示了具体的Python代码实现。接着,为了应对外部干扰,引入了DOBC(基于干扰观测器的控制)方法,通过估计并补偿干扰,确保系统的稳定性。此外,还提出了带有最小采样粒度的事件触发机制,进一步提高了控制效率,减少了计算资源的消耗。最终,通过仿真验证了所提出方法的有效性和优越性。 适合人群:对多智能体系统、最优控制理论以及相关应用感兴趣的科研人员和技术开发者。 使用场景及目标:适用于需要处理复杂环境下多智能体协作任务的研究项目,如机器人集群控制、自动化系统管理等。主要目标是在存在外部干扰的情况下,实现高效稳定的多智能体系统控制。 其他说明:文中提供了详细的代码示例,帮助读者更好地理解和实现所讨论的技术细节。同时,强调了在实际应用中需要注意的问题,如干扰估计的收敛速度、事件触发条件的设计等。

Global site tag (gtag.js) - Google Analytics