简单介绍一下h5常用的几种缓存方式
一、cookies
cookies的特点:
1、cookie会在http请求头上带上,会影响请求的速度。
2、容量只有4k
3、主domain污染(主域名设置了cookie,二级域名也会携带,造成冗余)
4、会造成安全问题
二、本地缓存
1、localStorage
特点
(1)存储形式 key ===>value
(2)过期时间:永不过期,存储在内存里面,除非手动删除
(3)大小:5M
(4)方法
设置:localStorage.setItem("key",value)
获取值:localStorage.getItem("key")
获取key:localStorage.key(0)
清除:localStorage.clear()
(5)使用注意事项
a:使用前要判断浏览器是否支持
b:写数据的时候,需要异常处理,避免超出容量抛异常try catch
c:避免把敏感的信息存入localStorage
d:key的唯一性
(6)判断浏览器是否支持localStorage
通用的方法是:
if(window.localStorage){
alert("浏览器支持localstorage");
}else{
alert("不支持")
}
这种判断的方法是不健全的,有些奇葩的浏览器虽然能获取到localStorage,
但是写不了数据到里面。解决方案,请看以下代码
try{
localStorage.setItem('aaa','123')
console.log("支持")
}catch (e) {
console.log("浏览器不支持localStorage")
}
做一个tyr{}catch(e){},没有没有捕获到异常说明这个浏览器是支持的
(7)使用限制
a:存储更新策略,过期控制(有些数据需要做一个过期控制,只能手动控制)
b:子域名之间不能共享存储数据(需要处理一个缓存的跨域问题,实现缓存共享)
c:超出存储大小之后如何存储(LRU,FIFO算法)
d:server端如何获取(localstorage只存在客户端,如果想获取只能放在请求参数里边)
(8)适用场景
a:利用本地数据,减少网络传输
b:弱网络环境下,高延迟,低带宽,尽量把数据本地化
三、浏览器数据indexedDB
indexDBapi比较复杂,在这里就暂时不列举,后面有时候的时候再整理一下,
这个是前端大神张鑫旭写的一个关于indexDB的介绍,了解一下。
https://www.zhangxinxu.com/wordpress/2017/07/html5-indexeddb-js-example/