HTML + jQuery + indexDB将数据缓存到浏览器

主要适用于大量数据进行浏览器缓存,减少二次加载的时间,具体实现方法如下:

1.首先设置缓存,初始化

function setCache(){
	var request = indexedDB.open('userone',11);
	request.onerror = function(e){
	};
	request.onsuccess = function(e){
	var db = e.target.result;   
	//insertDate(db); //添加数据
	};
	request.onupgradeneeded = function(e){
		var db = e.target.result;                
		//在第一次创建数据库的时候,就创建userinfo相关的objectstore,以供后面添加数据时候使用
		 if(!db.objectStoreNames.contains('user')){                    
		 //keyPath:Javascript对象,对象必须有一属性作为键值
			 var objectStore = db.createObjectStore('user',{autoIncrement: true});
			 objectStore.createIndex('keyIndex','key',{unique:true});//这里假定名字不能重复,创建基于name的唯一索引
		 }
	};
} 

2.把数据添加到缓存里
data:要缓存的数据
key:相当于键值对名,以后查询的时候用key来进行查询

//添加数据
function insertDate(data,key){
	var da={
		key:key,
		data:data
	}
	var request = indexedDB.open('userone',11);
	request.onerror = function(e){
	};
	request.onsuccess = function(e){
			var db = e.target.result;   
			var tt = db.transaction(["user"],"readwrite"); 
			var st =  tt.objectStore("user"); 
			var request2 = st.add(da);  
			request2.onsuccess = function (event){
				// console.log('数据写入成功');
			};
			request2.onerror = function (event){ 
				// console.log('数据写入失败');
			}
	};
}

3.读取缓存数据

//读取数据
function readerDate(key){
	var request = indexedDB.open('userone',11); //打开数据库
	request.onerror = function(e){
	//错误的回到方法
	};
	request.onsuccess = function(e){ 
	var db = e.target.result;   
	var tt = db.transaction(["user"],"readonly"); 
	var st =  tt.objectStore("user"); 
	var cursor = st.openCursor();
	cursor.onsuccess = function(e) {
		db = request.result; //创建数据库成功时候,将结果给db,此时db就是当前数据库
		var transaction = db.transaction("user",'readwrite');            
		var objectStore = transaction.objectStore("user");            
		var nameIndex = objectStore.index("keyIndex"); //获得nameIndex索引
		    nameIndex.get(key).onsuccess = function(e) { //根据name索引获得数据成功的回调
			var data = e.target.result.data;			
		  };
		  nameIndex.get(key).onerr = function(e) { //根据name索引获得数据失败的回调

		  }
		}
	};
}

设置成功!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值