html离线存储之localStorage(一)
2017-02-04 20:12
381 查看
h5之前的离线存储:cookie
问题是:1.cookie会在请求头中,臃肿且不安全
2.cookie有大小限制,4k
3.关系存储问题
h5提供的离线存储方案:
1.localstorage 大小5M sessionstorage(存储会话,关闭会话数据消失)
2.appliacation cache
3.indexDB和webSQL
localstorage
1.核心方法:
getItem 根据键获取值
setItem 创建新的记录
removeItem 根据键删除对应记录
key 获取localStorage的属性名称(键名称)
clear 清除所有键值对
其中创建新的记录方法:localStorage.setItem(key,value)和localStorage.key=value
需要注意的地方:
1.使用前判断浏览器是否支持
2.写数据时需要进行异常处理,避免超出容量出错
3.避免把敏感的信息写入localStorage
4.key唯一性
5.localstorage无法指定存储位置
6.不同浏览器在同一域下产生的localstorage数据是独立的
判断浏览器是否支持的方法:先set一次,并进行异常捕获
容量查看可参考http://www.cnblogs.com/MonkeyKingK/p/5499831.html
下面是写的一些接口,带过期检测处理
//浏览器支持性检测
function ifSupport() {
try{
localStorage.setItem("test","ifSupport");
localStorage.removeItem("test");
return true;
}catch(e){
if(e.message){
console.log(e.name+":"+e.message);
}else{
//IE
console.log(e.name+":"+e.description);
}
}
}
//带过期时间的set value(string)
function setWithLife(key,value){
var curtime=new Date().getTime();
localStorage.setItem(key,JSON.stringify({data:value,time:curtime}));
}
//带过期检测的get,过期可选删除 exp(timestamp)设定的过期时间
function getWithLife(key,exp,dele=false){
var nowtime=new Date().getTime();
var json_data=localStorage.getItem(key);
var obj_data=JSON.parse(json_data);
if(nowtime-obj_data.time<exp){
return obj_data.data;
}else{
if(dele!=false){
localStorage.removeItem(key);
}else{
return false;
}
}
}
问题是:1.cookie会在请求头中,臃肿且不安全
2.cookie有大小限制,4k
3.关系存储问题
h5提供的离线存储方案:
1.localstorage 大小5M sessionstorage(存储会话,关闭会话数据消失)
2.appliacation cache
3.indexDB和webSQL
localstorage
1.核心方法:
getItem 根据键获取值
setItem 创建新的记录
removeItem 根据键删除对应记录
key 获取localStorage的属性名称(键名称)
clear 清除所有键值对
其中创建新的记录方法:localStorage.setItem(key,value)和localStorage.key=value
需要注意的地方:
1.使用前判断浏览器是否支持
2.写数据时需要进行异常处理,避免超出容量出错
3.避免把敏感的信息写入localStorage
4.key唯一性
5.localstorage无法指定存储位置
6.不同浏览器在同一域下产生的localstorage数据是独立的
判断浏览器是否支持的方法:先set一次,并进行异常捕获
容量查看可参考http://www.cnblogs.com/MonkeyKingK/p/5499831.html
下面是写的一些接口,带过期检测处理
//浏览器支持性检测
function ifSupport() {
try{
localStorage.setItem("test","ifSupport");
localStorage.removeItem("test");
return true;
}catch(e){
if(e.message){
console.log(e.name+":"+e.message);
}else{
//IE
console.log(e.name+":"+e.description);
}
}
}
//带过期时间的set value(string)
function setWithLife(key,value){
var curtime=new Date().getTime();
localStorage.setItem(key,JSON.stringify({data:value,time:curtime}));
}
//带过期检测的get,过期可选删除 exp(timestamp)设定的过期时间
function getWithLife(key,exp,dele=false){
var nowtime=new Date().getTime();
var json_data=localStorage.getItem(key);
var obj_data=JSON.parse(json_data);
if(nowtime-obj_data.time<exp){
return obj_data.data;
}else{
if(dele!=false){
localStorage.removeItem(key);
}else{
return false;
}
}
}
相关文章推荐
- HTML5本地存储之Web SQL+LocalStorage+ApplicationCache以及indexed+LocalStorage+ApplicationCache构建的离线应用实例代码
- html 本地存储(localStorage and sessionStorage)
- HTML 本地存储(localStorage sessionStorage IndexedDB)
- 客户端数据存储 localStorage sessionStorage
- html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
- 本地存储(cookie&&sessionStorage&&localStorage)
- ITOO4.1之LocalStorage 本地存储
- [并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)调用复制文件接口的案例]
- JS localStorage 存储变量
- 线程本地存储(Thread Local Storage TLS)
- 线程本地存储(Thread Local Storage, TLS)简单分析与使用
- HTML 5中的存储及离线应用(五)
- HTML5五种客户端离线存储方案
- [并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)调用复制文件接口的案例]
- H5本地存储详细使用教程(localStorage + JSON数据存储应用框架)
- 线程本地存储(Thread Local Storage, TLS)
- 浏览器本地存储-localStorage && globalStorage || sessionStorage || UserData
- 登录时,记住用户名和密码的功能——HTML5 WEB存储(localStorage)
- 线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理
- 线程本地存储(Thread Local Storage, TLS)简单分析与使用