$Cache={};
$Cache.table='cache';

$Cache.set=function(data,limit)
{
	if(!$Db.base)return;
	//{name:'索引名',value:'索引值，可以为数组(框架解析为...arr)',type:'索引操作类型可不传',order:'排序'}
	//判断队列长度的条件，data为数据
	//data中加$unique表示数据唯一标识,$timeout表示多少秒后过期
	//$session:session表示重启浏览器后失效
	//$session:page表示关闭页面后失效
	if(data.$timeout)data.$timeout+=parseInt((new Date()).getTime()/1000);
	else data.$timeout=parseInt((new Date()).getTime()/1000)+60*60*60//默认缓存60小时
	$_Db.limitInsert({table:$Cache.table,where:{'$unique':data['$unique']},index:
	{
		name:'$timeout',value:[0,true],type:'lowerBound',order:'prev'
	},data:data,limit:limit}) 
}

$Cache.get=async function(where)
{
	if(!$Db.base)
	{
		return '';
	}
	let params=await $_Db.selectOne($Cache.table,where,'');
	if(params && params.length)params=params['0'];
	var ds=parseInt((new Date()).getTime()/1000);
	if(params && params.$timeout<ds)
	{
		$Cache.timeout(ds);
		return '';
	}
	else
	{
		return params;	
	}
}

$Cache.remove=function(param,index)
{
	return $_Db.poly($Cache.table,param,null,'remove',index);
}

$Cache.clear=function(fun)
{
	$_Db.clearTable($Cache.table,fun)
}

$Cache.timeout=function(ds)
{
	ds=ds?ds:((new Date()).getTime()/1000);
	$Cache.remove
	(
		{
			$timeout:function(parms)
			{
				if(parms && parms<ds)return true;
			}
		},
		null
	);
}

//清空
if(!sessionStorage.getItem('$Cache'))
{
	$Db.initFun.push
	(
		function()
		{
			$Cache.remove({$session:'session'});
		}
	)
	sessionStorage.setItem('$Cache',true);
}

$Db.initFun.push
(
	function()
	{
		$Cache.remove({$session:'page'});
	}
)

$Db.initFun.push($Cache.timeout);

