APC-JS异步代理缓存解决方案
浏览:1357 评论:0 时间:2012年02月22日 15:56:46
以前和飞舟一般做一个项目,为了减轻服务器的压力,我们一起研究了一下有关异步本地缓存的解决方案,
后来终于研究出来了,并且在实现项目中也效果非常好。
最近不太忙,我将这套方案整理出来,并且加以改进了一下,使其更加的OOP,更加的方便使用!
/****************************************************
说明:APC (Ajax Proxy Cache) 异步代理缓存
原理:利用 userdata/localStorage 进行数据保存,同时保存特定的时间记录来实现缓存功能
缓存大小:浏览器各有区别 <IE8:5M IE8:10M Firefox:5M Chrome:没有强制约定
注意:1:本库必需要引入 jQuery 2:本地保存的数据不会加密,建议不要保存敏感重要信息.
作者:V哥
API介绍:
[config单元](该单元必需和iface单元结合使用)
APC.config.global :该对象下的所有属性可以自定义
APC.config.add :添加配置项,必需与 APC.iface 单元结合使用,配置项格式如下:
----------------------------------------------------------------------
{
key:'userlist', // 唯一标识,用于区别这个配置
url:'/get.php?opt=json', // 异步请求地址
time:15 // 缓存时间,单位:秒;如果没有定义这个选项则使用 APC.config.global.time 值
}
---------------------------------------------------------------------
[iface单元] (该单元必需和config单元结合使用)
APC.iface.call :ajax异步请求操作,所有参数兼容 jQuery.get() 操作
APC.iface.remove :删除指定的请求缓存
APC.iface.clear :清空本地所有缓存
[cache单元] (该单元可以单独使用)
APC.cache.get 得到缓存值
APC.cache.set 设置缓存值
APC.cache.remove 删除指定的缓存
[json单元] (该单元可以单独使用)
APC.json.stringify 将对象编码成字符串
APC.json.parse 将字符串解析成对象
DEMO 示例:
<script src="jquery.js"></script>
<script src="APC.js"></script>
<script>
$(function(){
// 开启缓存(默认打开)
APC.config.global.enable = true;
// 默认缓存60秒
APC.config.global.time = 60;
// 以下根据需要决定是否设置的
APC.config.global.onStart = function(){ alert('请求开始');}
APC.config.global.onComplete = function(){ alert('请求完成');}
// 添加配置项
APC.config.add({
key:'userlist', // 唯一标识,用于区别这个配置
url:'/get.php?opt=json', // 异步请求地址
time:15 // 缓存时间,单位:秒;如果没有定义这个选项则使用默认缓存值
});
// 异味步请求,像 jQuery.get() 一样用,这个请求在 15秒内只会发送1次服务器请求
APC.iface.call('/get.php?opt=json',function(ret){ alert('用户回调:'+ret.name); },'json');
// 删除这个测试的本地缓存
//APC.iface.remove('userlist');
// 清空本地所有缓存
//APC.iface.clear();
// 设置本地缓存10秒
//APC.cache.set('key1','abcde',10);
// 取缓存
//APC.cache.get('key1');
// 删除缓存
//APC.cache.remove('key1');
// 对象进行编码
//APC.json.stringify({id:1,name:'yuan'});
// 解析成对象
//APC.json.parse('{"id":1,"name":"yuan"}');
});
</script>
/****************************************************/
详细代码请下载 APC.js ,欢迎讨论!