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左右,感觉跑下来所有数据对电脑伤害好大,想说好多,测试过程中真的是各种恶心啊。其他浏览器没有测试,头疼啊。

localstorage检测的更多相关文章

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

    一.H5之前客户端本地存储的实现 1. cookies cookies的应用比较广泛,但有以下几个问题: (1)每次http请求头上会带着,浪费资源 (2)每个域名客户端只能存储4K大小 (3)会造成 ...

  2. (转)HTML5 本地存储

    原文:http://www.cnblogs.com/rainman/archive/2011/06/22/2086069.html HTML5 本地存储 1.sessionStorage 2.loca ...

  3. HTML5本地存储详解

    HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的.Cookie的大小是受限的,并且 ...

  4. HTML5 本地存储形式

    1.sessionStorage 2.localStorage 3.Database Storage 4.globalStorage 5.兼容性 参考文献 本地持久化存储一直是本地客户端程序优于 we ...

  5. HTML5 本地存储 [转]

    1.sessionStorage 2.localStorage 3.Database Storage 4.globalStorage 5.兼容性 参考文献 本地持久化存储一直是本地客户端程序优于 we ...

  6. 检测页面的localstorage剩余容量

    首先用了JSON.stringify(localStorage).length得出你当前页面的localstorage所使用的字符数量current_num. 然后你再去http://arty.nam ...

  7. 一起来做chrome扩展《本地存储localStorage》

    chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名.得用这一点可以很好的处理扩展自己 ...

  8. HTML5 LocalStorage 本地存储原理详解

    首先自然是检测浏览器是否支持本地存储.在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在 ...

  9. HTML5 LocalStorage 本地存储

    HTML5 LocalStorage 本地存储 说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就 ...

随机推荐

  1. 【自定义IK词典】Elasticsearch之中文分词器插件es-ik的自定义词库

    Elasticsearch之中文分词器插件es-ik 针对一些特殊的词语在分词的时候也需要能够识别 有人会问,那么,例如: 如果我想根据自己的本家姓氏来查询,如zhouls,姓氏“周”.      如 ...

  2. IntelliJ IDEA 设置代码提示或自动补全的快捷键(Alt+/)

    点击 文件菜单(File) –> 点击 设置(Settings… Ctrl+Alt+S), –> 打开设置对话框.在左侧的导航框中点击 KeyMap. 接着在右边的树型框中选择 Main ...

  3. Avito Cool Challenge 2018

    考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...

  4. yarn虚拟cpu和虚拟内存

    虚拟cpu 虚拟的cpu代码并发数,如果一个container拥有2个vcpu,那么该container就可以真正的在同一时间运行两个线程,而不是靠切时间片而达到的逻辑并发.所以一般虚拟的cpu需要和 ...

  5. kylin从入门到实战:实际案例

    版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=308 排版乱?请移步原文获得更好的阅读体验 前面两篇文章已经介绍了kylin的相关概念以及cube的一些原理,这篇 ...

  6. React Native 的组件之底部导航栏 TabBarIOS(一)

    import React,{Component}from 'react'; import { AppRegistry, StyleSheet, Text, View, TabBarIOS, } fro ...

  7. linux 多进程fork

    对于父进程,fork函数返回了子程序的进程号,而对于子程序,fork函数则返回零,这样,对于程序,只要判定fork函数的返回值,就知道自己是处于父进程还是子进程中.

  8. canvas 实现鼠标画出矩形

    <!doctype html> <html> <head> <meta charset="UTF-8"> <meta name ...

  9. shell 布尔运算符

    布尔运算符 下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 ! 非运算,表达式为 true 则返回 false,否则返回 true. [ ! false ...

  10. iOS Socket编程-C语言版(TCP)

    . TCP Socket编程 TCP是面向连接的,安全可靠的传输层协议.TCP的程序基本框架设计图: TCP的程序基本框架设计图.jpg 注意:Socket通信一定有要服务端和客户端. 1.1 TCP ...