localstorage检测

localstorage检测

初来乍到,刚刚接触一个从零开始的移动wap项目,希望内容根据策略(正在思考中)在浏览器中缓存,appcache、localstorage都作为泛化知识进行了解和练习,知道appcache有很多坑,考虑到之前专门去封装过localstorage的api并且也了解过鬼道写的store.js的原理,因此就决定用localstorage,但是使用之前就写这篇文章作为调研结果。

项目对于存储虽然没有提出需要多么精确,既然使用了一定需要考虑存储的量精确到什么度,比如我要存多大的数据量,每次存储的更新策略以及浏览器的支持程度

当然我之前也有遇见过localstorage在浏览器失效的问题

好了,看起来很乐观,废话不多说了,开始写测试代码吧,cache.js

function testCache(data, isCn) {
        var len = data.length * (isCn ? 2 : 1);
        var i = 0;
        cacheAPI.clear();
        var totalTime = 0;
        try {
            var startTime = +new Date();
            for(i = 0; i < 1000000; i++) {
                cacheAPI.set(i, data);
            }
        } catch(e) {
            console.log(e)
        }
        i--;
        totalTime = Math.floor((+new Date() - startTime) /1000);
        console.log(‘单次存储字节数:‘ + len + ‘,key数:‘ + i + ‘,耗时:‘ + totalTime + ‘s,存储大小:‘ + (len * i /1024) + ‘kb‘ + ‘,速度:‘ + ((len * i /1024) / totalTime) + ‘kb/s‘)
    }
     testCache(‘测试‘, 1)

  

以下为chrome下测试结果 一次存储一个字节: key规则:‘test‘ + i(1-100000)

key数:486725,耗时:23s,存储大小:3802.546875kb,速度:165.328125kb/s

  

key规则:’j’ + i(1-1000000)

key数:669247,耗时:32s,存储大小:5228.5kb,速度:163.390625kb/s

  

key规则: i(1-1000000)

 单次存储字节数:1,key数:764854,耗时:39s,存储大小:5975.421875kb,速度:153.21594551282053kb/s

  

以下测试key均为i(1-1000000) 其他存储长度的测试数据

单次存储字节数:8,key数:382426,耗时:18s,存储大小:2987.703125kb,速度:165.98350694444446kb/s

单次存储字节数:16,key数:223081,耗时:10s,存储大小:3485.640625kb,速度:348.5640625kb/s

单次存储字节数:32,key数:133848,耗时:6s,存储大小:4182.75kb,速度:697.125kb/s

单次存储字节数:64,key数:73998,耗时:3s,存储大小:4624.875kb,速度:1541.625kb/s

  

存储汉字的测试数据

单次存储字节数:2,key数:594886,耗时:29s,存储大小:1161.88671875kb,速度:40.06505926724138kb/s

单次存储字节数:4,key数:535398,耗时:24s,存储大小:2091.3984375kb,速度:87.1416015625kb/s

单次存储字节数:8,key数:446164,耗时:21s,存储大小:3485.65625kb,速度:165.98363095238096kb/s

单次存储字节数:16,key数:334623,耗时:15s,存储大小:5228.484375kb,速度:348.565625kb/s

单次存储字节数:32,key数:223081,耗时:21s,存储大小:6971.28125kb,速度:331.9657738095238kb/s

单次存储字节数:64,key数:133848,耗时:6s,存储大小:8365.5kb,速度:1394.25kb/s

单次存储字节数:128,key数:73998,耗时:6s,存储大小:9249.75kb,速度:1541.625kb/s

单次存储字节数:512,key数:19976,耗时:1s,存储大小:9988kb,速度:9988kb/s

单次存储字节数:1024,key数:10122,耗时:0.756s,存储大小:10122kb,速度:13388.888888888889kb/s

  

上边的测试数据仅仅是在极限的情况下产生的数据,当然业务本身指定不会有这么频繁的存储。 这里是单词存储情况

单次存储字节数:1,key数:1,耗时:0ms,存储大小:0.0009765625kb,速度:Infinitykb/ms

单次存储字节数:2,key数:1,耗时:0ms,存储大小:0.001953125kb,速度:Infinitykb/ms

单次存储字节数:4,key数:1,耗时:0ms,存储大小:0.00390625kb,速度:Infinitykb/ms

单次存储字节数:8,key数:1,耗时:0ms,存储大小:0.0078125kb,速度:Infinitykb/ms

单次存储字节数:16,key数:1,耗时:0ms,存储大小:0.015625kb,速度:Infinitykb/ms

单次存储字节数:32,key数:1,耗时:0ms,存储大小:0.03125kb,速度:Infinitykb/ms

单次存储字节数:64,key数:1,耗时:0ms,存储大小:0.0625kb,速度:Infinitykb/ms

单次存储字节数:128,key数:1,耗时:0ms,存储大小:0.125kb,速度:Infinitykb/ms

单次存储字节数:256,key数:1,耗时:0ms,存储大小:0.25kb,速度:Infinitykb/ms

单次存储字节数:512,key数:1,耗时:0ms,存储大小:0.5kb,速度:Infinitykb/ms

单次存储字节数:1024,key数:1,耗时:0ms,存储大小:1kb,速度:Infinitykb/ms

  

从频繁存储的角度来看,实际存储的key的数量也会影响存储的大小,chrome上最大10m左右,感觉跑下来所有数据对电脑伤害好大,想说好多,测试过程中真的是各种恶心啊。其他浏览器没有测试,头疼啊。

时间: 2024-10-20 08:31:39

localstorage检测的相关文章

HTML5 Localstorage JS

/* HTML5 SessionStorage */ //添加数据 function SSsetVal(key, val){ if(window.sessionStorage){ //检测用户是否输入键 if(key=='' || val==''){ return 0; } sessionStorage.setItem(key,val); alert('数据:'+key+'->'+val+'添加成功'); return 1; }else{ alert('不支持本地存储'); return 0;

彻底搞懂Html5本地存储技术(一)

一.H5之前客户端本地存储的实现 1. cookies cookies的应用比较广泛,但有以下几个问题: (1)每次http请求头上会带着,浪费资源 (2)每个域名客户端只能存储4K大小 (3)会造成主Domain污染 (4)cookies明文传输很不安全 2.UserData(只有IE支持) 3.其他非主流方案 二.H5相关的存储知识 1.本地存储WebStorage (localstorage & sessionstorage) 浏览器支持情况 (1)生命周期 localstorage永久存

关于 HTML5本地存储详解 (转载学习)

HTML5 storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的. HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的.Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去.HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以

(转)HTML5 本地存储

原文:http://www.cnblogs.com/rainman/archive/2011/06/22/2086069.html HTML5 本地存储 1.sessionStorage 2.localStorage 3.Database Storage 4.globalStorage 5.兼容性 参考文献 本地持久化存储一直是本地客户端程序优于 web 程序的一个方面.对于本地应用程序,操作系统会一共一个抽象层,用于存储和获取特定于应用程序的数据,例如用户设置或者运行时状态.这些值可以被存储于

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

一.如何获取localStorage的剩余容量 在H5大行其道的今天,localStorage(本地存储)对每一个前断攻城师来说都不太陌生.同时localStorage也给我们带来了极大的便利,不用于cookies的小家子气,localStorage的存储量还是很客观的. 由于浏览器的差异性,导致我们需要对localStorage中的内容做出一部分取舍.而根据目前的市场上浏览器对loaclStorage的兼容性来看,最佳的大小是2.5M左右.如何得到localStorage的容量大小,大概接触过

Html 5 localstorage

HTML5 LocalStorage 本地存储 HTML5 LocalStorage 本地存储 说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个cookies,太少了.优势就是大家都支持,而且支持得还蛮好.很早以前那些禁用cookies的用户也都慢慢的不存在了,就好像以前禁用javascript的用户不存在了一样. userData是IE的东西,垃圾

html5的localstorage详解

HTML API localstorage在浏览器的API有两个:localStorage和sessionStorage,存在于window对象中:localStorage对应window.localStorage,sessionStorage对应window.sessionStorage.localStorage和sessionStorage的区别主要是在于其生存期. 基本使用方法 localStorage.setItem("b","isaac");//设置b为&

功能检测技术 typeOf

Javascript与很多编程语言不同,它不能够控制其运行环境.再写php代码时,只要在服务器端部署了正确的版本,那么程序就绝对能够运行,对于其他python或ruby后端语言来说,也不存在什么灰色区域.Javascript就不同了,它与所有的前端语言一样,都需要各大浏览器的支持. 前端语言必须通过浏览器渲染页面时才能被运行和执行,服务器与客户端的浏览器通过HTTP请求进行通信,接受资源后的浏览器再进行渲染.有很多因素,诸如浏览器对各项功能的支持程度.网络连接速度.屏幕大小.渲染效率等,都是完全

Feature.js-轻量级浏览器特性检测JavaScript库插件

简要教程 Feature.js是一款轻量级的浏览器特性检测JavaScript库插件.该插件运行速度快,使用简单,文件只有1kb大小.通过Feature.js你可以检测客户浏览器是否支持某些特性,并针对这些特性编写代码. Feature.js会自动在页面初始化时进行加载,但是它不会自动进行特性检测,直到你在代码中调用它时才会进行指定特性的检测. 通过Feature.js你可以对浏览器进行特性检测,例如检测浏览器是否支持CSS 3D transforms,为支持该特性的浏览器编写代码来操纵元素进行